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)

TigerTiger
źródło
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)
długa szyja
źródło
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

Łukasz Rysiak
źródło
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', ' '));
Geo
źródło
9

update mytable set title=trim(replace(REPLACE(title,CHAR(13),''),CHAR(10),''));

Powyżej działa dobrze.

Phaneendra Kasalanati
źródło
3
Ten jest przydatny, gdy '\ n' nie działa (testowane na stole roboczym mysql)
Mohamed23gharbi
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)
Ulysnep
źródło
2
UPDATE mytable SET title=TRIM(REPLACE(REPLACE(title, "\n", ""), "\t", ""));
Risse
źródło
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)
Darshan Montgomery
źródło
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

Lue Inubashiri
źródło
0

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

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
jay_mziray
źródło