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

TigerTiger
quelle
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)
langer Hals
quelle
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

Łukasz Rysiak
quelle
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', ' '));
Geo
quelle
9

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

Oben funktioniert gut.

Phaneendra Kasalanati
quelle
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)
Ulysnep
quelle
2
UPDATE mytable SET title=TRIM(REPLACE(REPLACE(title, "\n", ""), "\t", ""));
Risse
quelle
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)
Darshan Montgomery
quelle
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

Lue Inubashiri
quelle
0

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

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
jay_mziray
quelle