Come rimuovere i nuovi caratteri di riga dalle righe di dati in mysql?


87

Posso scorrere tutte le righe in uno script php e fare

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

e il taglio può rimuovere \ n

Ma mi stavo solo chiedendo se fosse possibile fare qualcosa dello stesso in una query?

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

funzionerà? Posso quindi eseguire questa query senza dover eseguire il ciclo!

Grazie

(PS: potrei testarlo ma la tabella è abbastanza grande e non voglio fare confusione con i dati, quindi ho pensato se hai testato qualcosa di simile prima)


Puoi semplicemente sbarazzarti della clausola where ... fai attenzione con il tuo assetto però perché potresti avere altri caratteri nel set (come il ritorno a
capo

Avresti dovuto testarlo prima di porre questa domanda. Funziona. Se vuoi testarlo su un tavolo grande puoi usare la clausola LIMIT.
Lukasz Lysik

Cosa c'è di sbagliato nella clausola WHERE? Solo curioso
Phill Pafford

@PhillPafford Niente, tecnicamente, è solo ridondante. (So ​​che ha più di 5 anni, ma potrebbe aiutare altre persone a leggerlo.)
Bing

Risposte:


120

la tua sintassi è sbagliata:

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

6
provenendo da MSSQL, questa sintassi mi era molto estranea. pensavo stessi usando uno pseudocodice! ma ha funzionato :)
Jeff

Documentazione su TRIM () per riferimento.
Mark G

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

ha funzionato per me.

sebbene sia simile, eliminerà anche \ r \ n

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


8
questo non rimuove il trailing \ n, rimuove tutto \ n, che non è desiderato qui.
collo lungo

20
Potrebbe non aver funzionato per l'OP esatto, ma mi ha aiutato in un problema con cui avevo a che fare, +1
Mike Purcell,

Ha funzionato per me, grazie.
Exoon

esattamente quello di cui avevo bisogno.
user3453428

14

1) Sostituisci tutti i nuovi caratteri di riga e tabulazione con spazi.

2) Rimuovere tutti gli spazi iniziali e finali .

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

Sopra funziona bene.


3
Questo è utile quando '\ n' non funziona (testato su mysql workbench)
Mohamed23gharbi

6

Rimuove i ritorni finali durante l'importazione da Excel. Quando si esegue questa operazione, è possibile che venga visualizzato un errore indicante che non è presente WHERE; ignorare ed eseguire.

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

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

4
questo non rimuove il trailing \ n, rimuove tutto \ n, che non è desiderato qui.
collo lungo

0

I miei 2 centesimi.

Per sbarazzarmi delle mie \ n avevo bisogno di fare un \\ n. Spero che aiuti qualcuno.

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

0

Per caratteri di nuova riga

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

Per tutti i caratteri di spazio bianco

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

Per saperne di più: Funzione TRIM di MySQL


0

Giocando con le risposte di cui sopra, questo funziona per me

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.