Busqueda sin distincion de mayusculas o acentos (Solucionado)

Iniciado por basickdagger, 21 Marzo 2013, 20:45 PM

0 Miembros y 1 Visitante están viendo este tema.

basickdagger

hola ps mi duda es esta

tengo esta parte de mi codigo PHP

SELECT * FROM anuncio WHERE tipo like  '%".$busqueda."%';


si busco "Comida", "mida", "omi".... funciona todo perfecto, pero si busco "comida" con C minuscula no detecta, como puedo hacer para q la consulta me la arroje sin importar sean mayusculas minusculas o acentos.

1mpuls0

#1
Cuál es tu intercalación?

Código (sql) [Seleccionar]
SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLLATION_NAME
   FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='tabla'


o intenta así:

Código (sql) [Seleccionar]

SELECT * FROM anuncio WHERE tipo COLLATE UTF8_GENERAL_CI LIKE '%".$busqueda."%';


o así:

Código (sql) [Seleccionar]

SELECT * FROM anuncio WHERE LOWER(tipo) LIKE '%".$busqueda."%';

abc

basickdagger

gracias porla respuesta mira mi cotejamiento es UTF-8-bin
intente utlizando strtolower de php, antes de hacer la consulta digamos q asi obligo a q entren puras minusculas,
pero eso no aplica para todo lo q necesito mi pregunta era si se puede desde la propia consulta

Edito: no había visto lo de arriba deja lo pruebo y te comento si funciono....

basickdagger


1mpuls0

#4
y por qué tienes utf8 bin?
por qué no lo cambias?, sabes que significa CI?  >:D

Yo uso utf8_spanish_ci y me va todo bien.

Código (sql) [Seleccionar]

mysql> USE ehn;
Database changed
mysql> SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='anuncios';
+---------------+--------------+------------+-------------+-----------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | COLLATION_NAME  |
+---------------+--------------+------------+-------------+-----------------+
| NULL          | ehn          | anuncios   | pk          | NULL            |
| NULL          | ehn          | anuncios   | tipo        | utf8_spanish_ci |
+---------------+--------------+------------+-------------+-----------------+
2 rows in set (0.02 sec)

mysql> SELECT * FROM anuncios WHERE tipo LIKE '%comida%';
+----+--------+
| pk | tipo   |
+----+--------+
|  1 | comida |
|  2 | Comida |
+----+--------+
2 rows in set (0.00 sec)



Edito: CI significa Case-Insensitive, es decir que no se tiene en cuenta las mayúsculas y minúsculas.
abc

basickdagger

LOL, tienes toda la razón y listo funciono perfectamente, solo cambie el cotejamiento a spanish CI, gracias por tomarte el tiempo... saludos   ;D