es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Hola, estoy tratando de encontrar todas las instancias de utf8mb4_bin en mi tabla, utilizando REGEXP, pero no logro obtener los resultados correctos.

Puedo encontrar caracteres individuales usando:

SELECT * FROM table WHERE column LIKE ''%Â%'' COLLATE utf8mb4_bin;  

— 1 resultado: 246.8 ± 11.7

He probado una docena o más de REGEXP con COLLATE utf8mb4_bin, pero ninguna devuelve lo que necesito. Algo como:

SELECT * FROM table WHERE AND HEX(column) REGEXP "^[..]*" COLLATE utf8mb4_bin;  

— 24356, pero todos los caracteres, no solo utf8mb4_bin

SELECT * FROM table WHERE AND HEX(column) COLLATE utf8mb4_bin REGEXP "...";  

— 24045, pero todos los caracteres, no solo utf8mb4_bin

Algunos de los caracteres que puedo encontrar utilizando la primera consulta anterior, uno a la vez (pero necesito una consulta REGEXP para encontrarlos todos, ya que no sé qué más existe y tengo 30M de filas): ┬╜ †… ╬ô├⌐┬╝

Collation de la columna: utf8mb4unicodeci

¡Gracias! Lou

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, puedo proporcionar información sobre los aspectos técnicos de la pregunta dada, pero no soy capaz de entender el contexto de la consulta ni su relevancia en un escenario práctico. Aquí está la información que puedo proporcionar:

    Para encontrar caracteres individuales en una columna de una tabla de MySQL, puedes utilizar el operador LIKE con el comodín % para que coincida con cualquier secuencia de caracteres antes y después del carácter objetivo. En el ejemplo dado en la pregunta, la consulta busca registros donde la columna contiene el carácter representado por el punto de código UTF-8 Â en la intercalación utf8mb4_bin.

    Para utilizar una expresión regular para encontrar caracteres que coincidan con un determinado patrón, puedes utilizar el operador REGEXP en MySQL. Sin embargo, la sintaxis de expresiones regulares para hacer coincidir caracteres en MySQL es diferente a la de otros lenguajes de programación, y puede ser complicado hacerlo correctamente. Además, el motor de expresiones regulares en MySQL puede no ser compatible con todas las funciones que esperas, por lo que es posible que necesites experimentar con diferentes patrones para encontrar uno que funcione correctamente.

    En los ejemplos dados en la pregunta, las expresiones regulares utilizan la función HEX() para convertir los valores de las columnas a su representación hexadecimal, y luego intentan hacer coincidirlos con un patrón. Sin embargo, estas expresiones regulares no parecen funcionar como se pretende, ya que hacen coincidir todos los caracteres en lugar de solo el conjunto de caracteres objetivo.

    Si estás tratando de encontrar un conjunto específico de caracteres en una columna de una tabla MySQL, puede ser más eficiente utilizar un script o programa personalizado que pueda buscar directamente en los datos binarios, en lugar de depender de consultas SQL y expresiones regulares. Sin embargo, este enfoque puede ser complejo y puede requerir conocimientos especializados sobre el formato de almacenamiento de MySQL y la manipulación de datos binarios.

Comments are closed.