upper primera minusculas mayusculas mayuscula letra ignorar español ejemplo diferenciar buscar mysql sql case-insensitive

mysql - primera - ¿Cómo puedo buscar(sin distinción de mayúsculas y minúsculas) en una columna utilizando el comodín LIKE?



sql like mayusculas minusculas (13)

Creo que esta consulta hará una búsqueda sin distinción de mayúsculas y minúsculas:

SELECT * FROM trees WHERE trees.`title` ILIKE ''%elm%'';

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 mayúsculas y minúsculas para esta búsqueda de comodines?

Estoy usando MySQL 5 y Apache.


Cuando quiero desarrollar búsquedas de casos no sensibles, siempre convierto cada cadena a minúsculas antes de hacer comparaciones


Debe configurar la codificación y la intercalación adecuadas para sus tablas.

La codificación de la 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


Este es el ejemplo de una consulta LIKE simple:

SELECT * FROM <table> WHERE <key> LIKE ''%<searchpattern>%''

Ahora, distingue entre mayúsculas y minúsculas utilizando la función LOWER ():

SELECT * FROM <table> WHERE LOWER(<key>) LIKE LOWER(''%<searchpattern>%'')


Estoy haciendo algo así.

Obteniendo los valores en minúsculas y MySQL hace el resto.

$string = $_GET[''string'']; mysqli_query($con,"SELECT * FROM table_name WHERE LOWER(column_name) LIKE LOWER(''%$string%'')");

Y para MySQL DOP alternativa:

$string = $_GET[''string'']; $q = "SELECT * FROM table_name WHERE LOWER(column_name) LIKE LOWER(?);"; $query = $dbConnection->prepare($q); $query->bindValue(1, "%$string%", PDO::PARAM_STR); $query->execute();


La sensibilidad a mayúsculas y minúsculas se define en las columnas / tablas / configuración de la base de datos. Puede realizar la consulta en una intercalación específica de la siguiente manera:

SELECT * FROM trees WHERE trees.`title` LIKE ''%elm%'' COLLATE utf8_general_ci

por ejemplo.

(Reemplace utf8_general_ci con cualquier colación que encuentre útil). El _ci sinónimo de mayúsculas y minúsculas .


No necesitas ALTER ninguna mesa. Solo use las siguientes consultas, antes de la consulta SELECT real que desea usar el comodín:

set names `utf8`; SET COLLATION_CONNECTION=utf8_general_ci; SET CHARACTER_SET_CLIENT=utf8; SET CHARACTER_SET_RESULTS=utf8;


Siempre he resuelto esto usando más bajo:

SELECT * FROM trees WHERE LOWER( trees.title ) LIKE ''%elm%''


bueno 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%'', listará todos los valores coincidentes.

No puedo decir acerca de las versiones anteriores de mysql.

Si ingresa en Oracle, como el trabajo distingue entre mayúsculas y minúsculas, por lo que si escribe como ''% elm%'', solo se utilizará para esto e ignorará las mayúsculas ..

Es extraño, pero así es como es :)


usa ILIKE

SELECT * FROM trees WHERE trees.`title` ILIKE ''%elm%'';

funciono para mi !!


Simplemente use:

"SELECT * FROM `trees` WHERE LOWER(trees.`title`) LIKE ''%elm%''";

O usar

"SELECT * FROM `trees` WHERE LCASE(trees.`title`) LIKE ''%elm%''";

Ambas funciones funcionan igual


SELECT * FROM trees WHERE trees.`title` COLLATE UTF8_GENERAL_CI LIKE ''%elm%''

En realidad, si agrega 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 encabezar ''%''


SELECT name FROM gallery WHERE CONVERT(name USING utf8) LIKE _utf8 ''%$q%'' GROUP BY name COLLATE utf8_general_ci LIMIT 5