Estoy trabajando con una base de datos MySQL que contiene información importada desde un archivo Excel. El problema es que esos datos contienen caracteres no ASCII, como guiones y caracteres de control ocultos (saltos de línea, etc.)
¿Existe alguna manera de detectar los registros que contienen caracteres diferentes al ASCII?
Estás leyendo una traducción autorizada de la pregunta How can I find non-ASCII characters in MySQL? planteada por Ed Mays en StackOverflow.
Respuestas
En primer lugar puedes probar esta consulta, que muestra las columnas cuyo contenido contiene algún caracter diferentes a las letras (mayúsculas o minúsculas) y los números:
SELECT * FROM nombreTabla WHERE NOT nombreColumna REGEXP '[A-Za-z0-9]';
De todas formas, si quieres comprobar estrictamente si la columna contiene algún carácter distinto del ASCII, tendrás que usar la siguiente consulta:
SELECT * FROM nombreTabla WHERE NOT HEX(nombreColumna) REGEXP '^([0-7][0-9A-F])*$';
@javiereguiluz