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