Miré a mi alrededor y no encontré lo que buscaba, así que aquí va.
SELECT * FROM trees WHERE trees.`title` LIKE '%elm%'
Esto funciona bien, pero no si el árbol se llama Elm o ELM, etc.
¿Cómo hago que SQL no distinga entre mayúsculas y minúsculas para esta búsqueda con comodines?
Estoy usando MySQL 5 y Apache.
mysql
sql
sql-like
case-insensitive
David Morrow
fuente
fuente
BINARY
like
debe ser insensible a mayúsculas y minúsculas por defecto.Respuestas:
En realidad, si agrega
COLLATE UTF8_GENERAL_CI
a la definición de su columna, puede omitir todos estos trucos: funcionará automáticamente.Esto también reconstruirá los índices en esta columna para que puedan usarse para las consultas sin mostrar '%'
fuente
COLLATE UTF8_GENERAL_CI
a la definición de su columna, puede omitir todos estos trucos: funcionará automáticamente.ALTER TABLE trees MODIFY COLUMN title VARCHAR(…) CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI
. Esto también reconstruirá los índices en esta columna para que puedan usarse para las consultas sin llevar '%'.Siempre he resuelto esto usando lower:
fuente
La distinción entre mayúsculas y minúsculas se define en la configuración de clasificación de columnas / tablas / bases de datos. Puede realizar la consulta en una clasificación específica de la siguiente manera:
por ejemplo.
(Reemplace
utf8_general_ci
con cualquier intercalación que encuentre útil). Los_ci
soportes para mayúsculas y minúsculas .fuente
utf8_general_ci
funciona bien, sin embargo.COLLATE
o hacer un truco simple como este (LOWER()
ambas cadenas antes de la comparación)SELECT * FROM products WHERE name COLLATE utf8_general_ci LIKE 'AB47TU';
Este es el ejemplo de una simple consulta LIKE:
Ahora, no distingue entre mayúsculas y minúsculas utilizando la función LOWER ():
fuente
COLLATE
problemas de formatoSimplemente use:
O usar
Ambas funciones funcionan igual
fuente
Estoy haciendo algo asi
Obtener los valores en minúsculas y MySQL hace el resto
Y para la alternativa de MySQL PDO:
fuente
Creo que esta consulta hará una búsqueda sin distinción entre mayúsculas y minúsculas:
fuente
utilizar
ILIKE
me funciono !!
fuente
No necesitas
ALTER
ninguna mesa. Simplemente use las siguientes consultas, antes de laSELECT
consulta real que desea usar con el comodín:fuente
bien en mysql 5.5, como el operador es insensible ... así que si su vale es elm o ELM o Elm o eLM o cualquier otro, y usa como '% elm%', enumerará todos los valores coincidentes.
No puedo decir sobre versiones anteriores de mysql.
Si ingresa en Oracle, le gusta que el trabajo distinga entre mayúsculas y minúsculas, por lo que si escribe como '% elm%', solo se utilizará para esto e ignorará las mayúsculas.
Extraño, pero así es como es :)
fuente
*_ci
, que significa "mayúsculas y minúsculas". Como esto es predeterminado para todos los juegos de caracteres admitidos (problemashow character set;
para verificar esto), la respuesta es parcialmente cierta :-) Solo el motivo es incorrecto. No es el operador el que no distingue entre mayúsculas y minúsculas, sino la clasificación predeterminada.fuente
Debe configurar la codificación y la clasificación adecuadas para sus tablas.
La codificación de tabla debe reflejar la codificación de datos real. ¿Cuál es su codificación de datos?
Para ver la codificación de la tabla, puede ejecutar una consulta
SHOW CREATE TABLE tablename
fuente
Cuando quiero desarrollar búsquedas de mayúsculas y minúsculas insensibles, siempre convierto cada cadena a minúsculas antes de hacer una comparación
fuente
Puedes usar el siguiente método
usa este método como a continuación
fuente
Las comparaciones de cadenas no binarias (incluidas
LIKE
) no distinguen entre mayúsculas y minúsculas en MySql: https://dev.mysql.com/doc/refman/en/case-sensitivity.htmlfuente