Tengo una base de datos con varios miles de registros, y necesito quitar uno de los campos para asegurarme de que solo contiene ciertos caracteres (alfanuméricos, espacios y comillas simples). ¿Qué SQL puedo usar para quitar cualquier otro carácter (como barras, etc.) de ese campo en toda la base de datos?Eliminar caracteres especiales de un campo de base de datos
Respuesta
update mytable
set FieldName = REPLACE(FieldName,'/','')
Ese es un buen lugar para comenzar.
Esto lo hizo. Prefiero la expresión regular como menciona Rasika, pero este sitio está en un servidor compartido. – MarathonStudios
Eche un vistazo a LIB_MYSQLUDF_PREG que necesita compilarse en el servidor MySQL, pero tiene funciones avanzadas de expresión regular como preg_replace
que le ayudarán con su tarea.
La función Reemplazar() es la primera opción. Sin embargo, los Caracteres Especiales a veces pueden ser difíciles de escribir en una consola. Para aquellos que puede combinar Reemplazar con la función Char().
p. Ej. la eliminación de €
Update products set description = replace(description, char(128), '');
Puede encontrar toda la Ascii values here
Lo ideal sería que usted podría hacer una expresión regular para encontrar todos los caracteres especiales, pero al parecer that's not possible with MySQL.
Más allá de eso, que había necesidad de ejecutar a través de su lenguaje de scripting favorito
Esto también puede ser útil.
Primero debe conocer el conjunto de caracteres de la base de datos y/o de la tabla. Por ejemplo, supongamos que tiene un entorno UTF-8 y desea quitar/quitar símbolos como símbolos registrados en un círculo, símbolo de copyright en un círculo y símbolo de marca registrada de un campo y luego buscar en Internet a través de Bing o Yahoo o Google para el valores de código hexadecimal de estos símbolos en el sistema de codificación UTF-8:
Symbol Utf-8 Hex ======= ========= circled copyright C2A9 circled registered C2AE Trademark (i.e., TM) E284A2
a continuación, el fregado seleccione SQL para la F1 de campo de la tabla t1, el uso de las instalaciones de hex/unhex en conjunción con la función de reemplazar, lo más probable es parecerse esto:
SELECT cast(unhex(replace(replace(replace(hex(f1),'C2A9',''),'C2AE',''),'E284A2','')) AS char) AS cleanf1 FROM t1 ;
arriba, tenga en cuenta el campo original para limpiar/limpiar es f1, la tabla es t1 y el encabezado de salida es cleanf1. El casting "como char" es necesario porque, sin él, el mysql 5.5.8 en el que he probado devuelve blob. Espero que esto ayude
Abundando en respuesta Vinnies ... se puede utilizar el siguiente (nótese el escape en los dos últimos estados ...
update table set column = REPLACE(column,"`","");
update table set column = REPLACE(column,"~","");
update table set column = REPLACE(column,"!","");
update table set column = REPLACE(column,"@","");
update table set column = REPLACE(column,"#","");
update table set column = REPLACE(column,"$","");
update table set column = REPLACE(column,"%","");
update table set column = REPLACE(column,"^","");
update table set column = REPLACE(column,"&","");
update table set column = REPLACE(column,"*","");
update table set column = REPLACE(column,"(","");
update table set column = REPLACE(column,")","");
update table set column = REPLACE(column,"-","");
update table set column = REPLACE(column,"_","");
update table set column = REPLACE(column,"=","");
update table set column = REPLACE(column,"+","");
update table set column = REPLACE(column,"{","");
update table set column = REPLACE(column,"}","");
update table set column = REPLACE(column,"[","");
update table set column = REPLACE(column,"]","");
update table set column = REPLACE(column,"|","");
update table set column = REPLACE(column,";","");
update table set column = REPLACE(column,":","");
update table set column = REPLACE(column,"'","");
update table set column = REPLACE(column,"<","");
update table set column = REPLACE(column,",","");
update table set column = REPLACE(column,">","");
update table set column = REPLACE(column,".","");
update table set column = REPLACE(column,"/","");
update table set column = REPLACE(column,"?","");
update table set column = REPLACE(column,"\\","");
update table set column = REPLACE(column,"\"","");
he creado función simple para este
DROP FUNCTION IF EXISTS `regex_replace`$$
CREATE FUNCTION `regex_replace`(pattern VARCHAR(1000),replacement VARCHAR(1000),original VARCHAR(1000)) RETURNS VARCHAR(1000) CHARSET utf8mb4
DETERMINISTIC
BEGIN
DECLARE temp VARCHAR(1000);
DECLARE ch VARCHAR(1);
DECLARE i INT;
SET i = 1;
SET temp = '';
IF original REGEXP pattern THEN
loop_label: LOOP
IF i>CHAR_LENGTH(original) THEN
LEAVE loop_label;
END IF;
SET ch = SUBSTRING(original,i,1);
IF NOT ch REGEXP pattern THEN
SET temp = CONCAT(temp,ch);
ELSE
SET temp = CONCAT(temp,replacement);
END IF;
SET i=i+1;
END LOOP;
ELSE
SET temp = original;
END IF;
RETURN temp;
END
ejemplo
Uso:
SELECT <field-name> AS NormalText, regex_replace('[^A-Za-z0-9 ]', '', <field-name>)AS RegexText FROM
<table-name>
- 1. Regex eliminar caracteres especiales
- 2. R eliminar caracteres especiales del marco de datos
- 3. ¿Cómo insertar caracteres especiales en una base de datos?
- 4. Guardando caracteres especiales en la base de datos MySQL
- 5. ¿Cómo puedo eliminar caracteres especiales?
- 6. ¿Cómo eliminar caracteres especiales de una cadena?
- 7. ¿Eliminar caracteres especiales en SQL sin bucle?
- 8. Cómo eliminar caracteres especiales y espacios en un campo de texto usando PHP
- 9. eliminar caracteres especiales de un archivo en Linux
- 10. Cómo eliminar caracteres del final del campo en la base de datos MySql
- 11. Lucene y caracteres especiales
- 12. Eliminar los últimos N caracteres del campo en una base de datos SQL Server
- 13. caracteres especiales de mailto
- 14. jQuery eliminar los caracteres especiales de la cadena y más
- 15. Regex para eliminar todos los caracteres especiales de la cadena?
- 16. Eliminar todos los caracteres especiales de una cadena en R?
- 17. Android Sqlite Caracteres especiales
- 18. caracteres especiales en id de etiquetas html
- 19. jQuery ajax caracteres especiales problemas
- 20. ¿Cómo recuperar los últimos 4 caracteres de un campo de base de datos mysql?
- 21. ¿Deberíamos codificar HTML caracteres especiales antes de almacenarlos en la base de datos?
- 22. Búsqueda de SQLite FTS4 con caracteres especiales
- 23. Columna de búsqueda en la base de datos SQL ignorando caracteres especiales
- 24. Caracteres especiales en PHP/MySQL
- 25. Mostrar caracteres especiales usando System.out.println
- 26. NSPredicate de caracteres especiales - iPhone
- 27. ¿Existe un método Java multiplataforma para eliminar el nombre de archivo de caracteres especiales?
- 28. ¿Cómo ingresar caracteres especiales como "&" en la base de datos Oracle?
- 29. Caracteres especiales como @ y & en los datos de cURL POST
- 30. reemplazar caracteres especiales
Sólo hacer algunos cambios y nos e reemplazar. Varios miles de registros no son tantos ... ¡hombre arriba! – Hogan