Si te encuentras con alguna parte que no entiendes puedes dejarnos un comentario y haremos todo lo posible de ayudarte rápidamente.
Solución:
MySQL proporciona una gestión integral de juegos de caracteres que puede ayudar con este tipo de problema.
SELECT whatever
FROM tableName
WHERE columnToCheck <> CONVERT(columnToCheck USING ASCII)
los CONVERT(col USING charset)
La función convierte los caracteres no convertibles en caracteres de reemplazo. Entonces, el texto convertido y no convertido será desigual.
Ver esto para más discusión. https://dev.mysql.com/doc/refman/8.0/en/charset-repertorio.html
Puede utilizar cualquier nombre de conjunto de caracteres que desee en lugar de ASCII. Por ejemplo, si desea averiguar qué caracteres no se representarán correctamente en la página de códigos 1257 (lituano, letón, estonio), utilice CONVERT(columnToCheck USING cp1257)
Puede definir ASCII como todos los caracteres que tienen un valor decimal de 0 – 127 (0x00 – 0x7F) y buscar columnas con caracteres que no sean ASCII utilizando la siguiente consulta
SELECT * FROM TABLE WHERE NOT HEX(COLUMN) REGEXP '^([0-7][0-9A-F])*$';
Esta fue la consulta más completa que se me ocurrió.
Depende exactamente de lo que esté definiendo como “ASCII”, pero sugeriría probar una variante de una consulta como esta:
SELECT * FROM tableName WHERE columnToCheck NOT REGEXP '[A-Za-z0-9]';
Esa consulta devolverá todas las filas donde columnToCheck contiene caracteres no alfanuméricos. Si tiene otros caracteres que son aceptables, agréguelos a la clase de caracteres en la expresión regular. Por ejemplo, si los puntos, las comas y los guiones están bien, cambie la consulta a:
SELECT * FROM tableName WHERE columnToCheck NOT REGEXP '[A-Za-z0-9.,-]';
La página más relevante de la documentación de MySQL es probablemente 12.5.2 Expresiones regulares.
Comentarios y puntuaciones
Tienes la opción de favorecer nuestra misión fijando un comentario o dejando una puntuación te damos la bienvenida.