instr - substring mysql ejemplos
¿La función TRIM de MySQL no recorta los saltos de línea ni los retornos de carro? (10)
Mis saltos de línea estaban en el medio de la cadena, y no tenía control sobre los datos de origen. El siguiente comando mysql funcionó para mí:
REPLACE(FIELD,''/r/n'','' '')
De mis experimentos, no parece hacerlo. Si esto es cierto, ¿cuál es el mejor método para eliminar los saltos de línea? Actualmente estoy experimentando con los parámetros que TRIM acepta del personaje para eliminar, comenzando con recorte /n
y /r
.
Las respuestas anteriores, cuando se combinan, funcionan. Un ejemplo completo de reemplazo de saltos de línea al principio y al final del campo se ve así:
UPDATE table SET field=REPLACE(field, field, TRIM(BOTH ''/r/n'' FROM field))
Enfrenté el mismo problema con uno de los campos. No hay una solucion perfecta. En mi caso, tuve la suerte de que se suponía que la longitud del campo era 6. Entonces usé una consulta como
update events set eventuniqueid = substring(eventuniqueid, 1, 6) where length(eventuniqueid) = 7;
Simplemente tendrá que elegir la mejor opción según su necesidad. El reemplazo ''/ n'' y ''/ r / n'' no funcionó para mí y simplemente terminé perdiendo el tiempo.
Sí, Trim()
funcionará en MySQL. Tienes dos opciones.
1) selecciónelo:
select trim(BOTH ''/n'' from [field_name]) as field
Si eso no funciona, intente con ''/r''
; si eso no funciona, intente con ''/n/r''
.
2) reemplace los datos incorrectos en su tabla con una actualización ...
update [table_name] set [field_name] = trim(BOTH ''/n'' from [field_name])
Recomiendo seleccionar primero para determinar qué salto de línea tiene (/ r o / n).
solo pude hacer que funcionara haciendo el char
;
trim(both char(13) from fieldname)
Trim()
en MySQL solo elimina espacios.
No creo que haya una forma incorporada de eliminar todo tipo de espacios en blanco al inicio y al final en MySQL, a menos que uses Trim()
repetidamente.
Te sugiero que uses otro idioma para limpiar tus datos actuales y simplemente asegúrate de que tus entradas se desinfecten a partir de ahora.
select trim(both ''/r/n'' from FIELDNAME) from TABLE;
debería funcionar si select trim(both ''/n'' from FIELDNAME) from TABLE;
no funciona
select trim(both ''/n'' from FIELDNAME) from TABLE;
La función de trim
estándar de MySQL no es como las funciones de recorte en otros idiomas que conozco, ya que solo elimina las coincidencias de cadena exactas, en lugar de los caracteres de la cadena. Esta función almacenada es más parecida a un ajuste normal que encontrarías en PHP, o strip en python, etc.
CREATE FUNCTION `multiTrim`(string varchar(1023),remove varchar(63)) RETURNS varchar(1023) CHARSET utf8
BEGIN
-- Remove trailing chars
WHILE length(string)>0 and remove LIKE concat(''%'',substring(string,-1),''%'') DO
set string = substring(string,1,length(string)-1);
END WHILE;
-- Remove leading chars
WHILE length(string)>0 and remove LIKE concat(''%'',left(string,1),''%'') DO
set string = substring(string,2);
END WHILE;
RETURN string;
END;
Entonces deberías poder hacer:
select multiTrim(string,"/r/n/t ");
y debería eliminar todas las nuevas líneas, pestañas y espacios.
REPLACE(FIELD,''/r/n'','' '')
funciona perfectamente en la base de datos MySql 5.1