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


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)

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


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

9

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

Arriba está funcionando bien.


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)

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

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)

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


0

Jugando con las respuestas anteriores, esta funciona para mí

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.