2010-10-22 28 views
6

En mi tabla tengo nombre y apellido. Pocos nombres son mayúsculas (ABRAHAM), pocos nombres son minúsculas (abraham), pocos nombres son caracteres que comienzan con ucword (Abraham).MySQL regex query case insensible

Así que cuando estoy haciendo la condición where usando REGEXP '^ [abc]', no obtengo los registros adecuados. Cómo cambiar los nombres a minúsculas y usar SELECT QUERY.

SELECT * FROM `test_tbl` WHERE cus_name REGEXP '^[abc]'; 

Esta es mi consulta, funciona bien si los registros son minúsculas, pero mis registros son intermedios, mi todo nombre cus son caso no es menor, todos los nombres son como ucword.

Por lo tanto, para esta consulta anterior, no se muestran los registros adecuados.

+2

¿Estás tratando de resolver? 'REGEXP' casi siempre es una solución incorrecta. – zerkms

+0

y también mi consulta expresión regular anterior mostrando a partir de U, V, W, todos los alfabetos, ARRIBA REGEXP no trabajar – Bharanikumar

+0

y también quiero a buscar el nombre empezando por A o B o C, – Bharanikumar

Respuesta

10

Creo que debería consultar su base de datos asegurándose de que los nombres estén bajos, suponga que ese es el nombre que desea descubrir, y en su aplicación lo ha bajado como 'abraham', ahora su consulta debería ser de esta manera:

SELECT * FROM `test_tbl` WHERE LOWER(cus_name) = name 

Dado que no sé qué idioma que usa el nombre, he acaba de colocar, pero asegúrese de que este se baja y se debería recuperar Abraham, Abraham o cualquier variación del nombre!

Hepe it helps!

+0

REGEXP '^ [[: <:]]b.*[[:>:] ] 'esto representa el nombre de los registros que comienza con b pero si lo agrego o condiciono, entonces muestra REGEXP'^[[: <:]] b. * | c. * [[:>:]] 'todos los registros, eso está comenzando con lo que sea como f, t, h, u, pero según mi condición, solo debe comenzar con los nombres de los caracteres byc, – Bharanikumar

0

No necesita regexp para buscar nombres que comiencen con una cadena o carácter específico.

SELECT * FROM `test_tbl` WHERE cus_name LIKE 'abc%' ; 

% es comodín char. La búsqueda no es sensitiva a menos que establezca el atributo binario para cus_name columna o se utiliza el operador binario

SELECT * FROM `test_tbl` WHERE BINARY cus_name LIKE 'abc%' ; 
+2

su consulta busca nombres que comiencen con la cadena 'abc' algo muy diferente de la consulta de OP que busca nombres que comienzan con 'a' o 'b' o 'c'. – codaddict

+0

Supongo que lo anterior está mal, deberíamos ver REGEXP '^ [ABC]' – Bharanikumar

+0

Supuse que el usuario estaba tratando de crear un campo/herramienta de "buscar mientras escribe". – aeon

4

¿Has probado:

SELECT * FROM `test_tbl` WHERE LOWER(cus_name) REGEXP '^[abc]'; 
Qué problema real