Wie entferne ich neue Zeilenzeichen aus Datenzeilen in MySQL?


87

Ich kann alle Zeilen in einem PHP-Skript durchlaufen und tun

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

und Trimmen kann entfernen \ n

Aber ich habe mich nur gefragt, ob in einer Abfrage etwas Ähnliches getan werden kann.

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

wird es funktionieren? Ich kann diese Abfrage dann einfach ausführen, ohne sie durchlaufen zu müssen!

Vielen Dank

(PS: Ich könnte es testen, aber die Tabelle ist ziemlich groß und möchte nicht mit Daten herumspielen. Ich dachte nur, wenn Sie so etwas schon einmal getestet haben.)


Sie können einfach die where-Klausel loswerden ... seien Sie jedoch vorsichtig mit Ihrer Trimmung, da Sie möglicherweise andere Zeichen im Set haben (wie Wagenrücklauf '\ r')
jkelley

Sie sollten das getestet haben, bevor Sie diese Frage stellen. Es klappt. Wenn Sie dies an einem großen Tisch testen möchten, können Sie die LIMIT-Klausel verwenden.
Lukasz Lysik

Was ist falsch an der WHERE-Klausel? Nur neugierig
Phill Pafford

@PhillPafford Technisch gesehen ist nichts überflüssig. (Ich weiß, dass dies> 5 Jahre alt ist, könnte aber anderen Leuten helfen, es zu lesen.)
Bing

Antworten:


119

Ihre Syntax ist falsch:

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

6
Diese aus MSSQL stammende Syntax war mir sehr fremd. Ich dachte du benutzt Pseudocode! aber es hat funktioniert :)
Jeff

Dokumentation zu TRIM () als Referenz.
Mark G

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

arbeitete für mich.

Während es ähnlich ist, wird es auch \ r \ n los

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


7
Dies entfernt nicht das Trailing \ n, sondern alle \ n, was hier nicht erwünscht ist.
Longneck

19
Dies hat möglicherweise nicht für das genaue OP funktioniert, hat aber in einem Problem geholfen, mit dem ich es zu tun hatte, +1
Mike Purcell

Arbeitete für mich, danke.
Exoon

genau das, was ich brauchte.
user3453428

13

1) Ersetzen Sie alle neuen Zeilen- und Tabulatorzeichen durch Leerzeichen.

2) Entfernen Sie alle führenden und nachfolgenden Leerzeichen.

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

9

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

Oben funktioniert gut.


3
Dieser ist nützlich, wenn '\ n' nicht funktioniert (getestet auf der MySQL-Workbench)
Mohamed23gharbi

6

Entfernt nachfolgende Rückgaben beim Importieren aus Excel. Wenn Sie dies ausführen, erhalten Sie möglicherweise die Fehlermeldung, dass es kein WO gibt. ignorieren und ausführen.

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

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

3
Dies entfernt nicht das Trailing \ n, sondern alle \ n, was hier nicht erwünscht ist.
Longneck

0

Meine 2 Cent.

Um meine \ n loszuwerden, musste ich ein \\ n machen. Hoffe das hilft jemandem.

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

0

Für neue Zeilenzeichen

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);

Für alle Leerzeichen

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);

Lesen Sie mehr: MySQL TRIM-Funktion


0

Dieser spielt mit den obigen Antworten und funktioniert für mich

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.