¿Cómo eliminar caracteres de nueva línea de filas de datos en mysql?

87

Puedo recorrer todas las filas en un script php y hacer

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

y recortar puede eliminar \ n

Pero me preguntaba si se podría hacer algo igual en una consulta.

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

¿Funcionará? ¡Entonces puedo ejecutar esta consulta sin necesidad de recorrerla!

Gracias

(PD: podría probarlo, pero la tabla es bastante grande y no quiero jugar con los datos, así que piense si ha probado algo como esto antes)

Tigre tigre
fuente
Puede simplemente deshacerse de la cláusula where ... tenga cuidado con su recorte porque es posible que tenga otros caracteres en el conjunto (como el retorno de carro '\ r')
jkelley
Deberías haberlo probado antes de hacer esta pregunta. Funciona. Si desea probar eso en una mesa grande, puede usar la cláusula LIMIT.
Lukasz Lysik
¿Qué pasa con la cláusula WHERE? Simplemente curioso
Phill Pafford
@PhillPafford Nada, técnicamente, es redundante. (Sé que esto tiene más de 5 años, pero podría ayudar a otras personas que vengan a leerlo).
Bing

Respuestas:

120

tu sintaxis es incorrecta:

update mytable SET title = TRIM(TRAILING '\n' FROM title)
cuello largo
fuente
6
viniendo de MSSQL, esta sintaxis me era muy extraña. ¡Pensé que estabas usando un pseudocódigo! pero funcionó :)
Jeff
Documentación sobre TRIM () como referencia.
Mark G
121
UPDATE test SET log = REPLACE(REPLACE(log, '\r', ''), '\n', '');

trabajó para mi.

si bien es similar, también eliminará \ r \ n

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

Łukasz Rysiak
fuente
8
esto no elimina el \ n final, elimina todo \ n, lo que no se desea aquí.
cuello largo
20
Es posible que esto no haya funcionado para el OP exacto, pero ayudó en una situación con la que estaba tratando, +1
Mike Purcell
Funcionó para mí, gracias.
Exoon
exactamente lo que necesitaba.
user3453428
14

1) Reemplace todas las líneas nuevas y los caracteres de tabulación con espacios.

2) Elimine todos los espacios iniciales y finales .

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

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

Arriba está funcionando bien.

Phaneendra Kasalanati
fuente
3
Este es útil cuando '\ n' no funciona (probado en mysql workbench)
Mohamed23gharbi
6

Elimina las devoluciones finales al importar desde Excel. Cuando ejecuta esto, puede recibir un error de que no hay DONDE; ignorar y ejecutar.

UPDATE table_name SET col_name = TRIM(TRAILING '\r' FROM col_name)
Ulysnep
fuente
2
UPDATE mytable SET title=TRIM(REPLACE(REPLACE(title, "\n", ""), "\t", ""));
Risse
fuente
4
esto no elimina el \ n final, elimina todo \ n, lo que no se desea aquí.
cuello largo
0

Mis 2 centavos.

Para deshacerme de mis \ n, necesitaba hacer una \\ n. Espero que ayude a alguien.

update mytable SET title = TRIM(TRAILING '\\n' FROM title)
Darshan Montgomery
fuente
0

Para caracteres de nueva línea

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

Para todos los caracteres de espacio en blanco

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

Leer más: Función TRIM de MySQL

Lue Inubashiri
fuente
0

Jugando con las respuestas anteriores, esta funciona para mí

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