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.