Jak usunąć znaki nowego wiersza z wierszy danych w mysql?


87

Mogę przejrzeć wszystkie wiersze w skrypcie php i zrobić

UPDATE mytable SET title = "'.trim($row['title']).'" where id = "'.$row['id'].'";

i przycinanie może usunąć \ n

Ale zastanawiałem się, czy coś można zrobić w jednym zapytaniu?

 update mytable SET title = TRIM(title, '\n') where 1=1

czy to zadziała? Mogę wtedy po prostu wykonać to zapytanie bez konieczności przechodzenia przez pętlę!

dzięki

(PS: mógłbym to przetestować, ale tabela jest dość duża i nie chcę mieszać danych, więc pomyśl, jeśli wcześniej testowałeś coś takiego)


Możesz po prostu pozbyć się klauzuli where ... jednak uważaj na swoje przycinanie, ponieważ możesz mieć inne znaki w zestawie (np. Powrót karetki '\ r')
jkelley

Powinieneś był to sprawdzić, zanim zadasz to pytanie. To działa. Jeśli chcesz to przetestować na dużym stole, możesz użyć klauzuli LIMIT.
Łukasz Lysik

Co jest nie tak z klauzulą ​​WHERE? Po prostu ciekawy
Phill Pafford

@PhillPafford Nic, technicznie rzecz biorąc, jest po prostu zbędne. (Wiem, że to> 5 lat, ale może pomóc innym ludziom przychodzi, aby ją przeczytać.)
Bing

Odpowiedzi:


121

twoja składnia jest nieprawidłowa:

update mytable SET title = TRIM(TRAILING '\n' FROM title)

Dodanie:

Jeśli znak nowego wiersza znajduje się na początku pola:

update mytable SET title = TRIM(LEADING '\n' FROM title)

6
pochodzący z MSSQL, ta składnia była mi bardzo obca. myślałem, że używasz pseudokodu! ale zadziałało :)
Jeff

Dokumentacja TRIM () w celach informacyjnych.
Mark G

121
UPDATE test SET log = REPLACE(REPLACE(log, '\r', ''), '\n', '');

pracował dla mnie.

chociaż jest podobny, pozbędzie się również \ r \ n

http://lists.mysql.com/mysql/182689


8
to nie usuwa końcowego \ n, usuwa wszystko \ n, co nie jest tutaj pożądane.
Longneck

20
Może to nie zadziałało w przypadku dokładnego OP, ale pomogło w sitchu, z którym miałem do czynienia, +1
Mike Purcell

Pracował dla mnie, dziękuję.
Exoon

dokładnie to, czego potrzebowałem.
user3453428

14

1) Zastąp wszystkie znaki nowego wiersza i tabulatora spacjami.

2) Usuń wszystkie spacje wiodące i końcowe .

 UPDATE mytable SET `title` = TRIM(REPLACE(REPLACE(REPLACE(`title`, '\n', ' '), '\r', ' '), '\t', ' '));


6

Usuwa końcowe zwroty podczas importowania z programu Excel. Kiedy to wykonasz, możesz otrzymać błąd, że nie ma GDZIE; zignoruj ​​i wykonaj.

UPDATE table_name SET col_name = TRIM(TRAILING '\r' FROM col_name)

2
UPDATE mytable SET title=TRIM(REPLACE(REPLACE(title, "\n", ""), "\t", ""));

4
to nie usuwa końcowego \ n, usuwa wszystko \ n, co nie jest tutaj pożądane.
longneck

0

Moje 2 centy.

Aby pozbyć się moich \ n, musiałem zrobić \\ n. Mam nadzieję, że to komuś pomoże.

update mytable SET title = TRIM(TRAILING '\\n' FROM title)

0

Dla znaków nowego wiersza

UPDATE table_name SET field_name = TRIM(TRAILING '\n' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r\n' FROM field_name);

Dla wszystkich białych znaków

UPDATE table_name SET field_name = TRIM(field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\n' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r\n' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\t' FROM field_name);

Czytaj więcej: Funkcja MySQL TRIM


0

Bawiąc się powyższymi odpowiedziami, ten działa dla mnie

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.