2011-10-22 19 views
143

Esto se ha preguntado en este sitio antes, pero no he podido encontrar una respuesta suficiente. Si estoy haciendo una consulta como:MySQL mayúsculas y minúsculas consulta

Select Seller from Table where Location = 'San Jose' 

¿Cómo puedo hacerlo volver sólo vendedores con Location 'San José' en lugar de 'San José' o algo más?

+1

Utilice [COLLATE] (http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html) –

+3

posible duplicado de [¿Cómo puedo hacer una comparación de cadenas sensible a mayúsculas y minúsculas SQL en MySQL?] (http://stackoverflow.com/questions/5629111/how-can-i-make-sql-case-sensitive-string-comparison-on-mysql) – ks1322

+1

La mejor respuesta es mejor que COLLATE, imo, porque es más simple . –

Respuesta

375

Las consultas MySQL no distinguen entre mayúsculas y minúsculas por defecto. A continuación se muestra una consulta simple que busca 'valor'. Sin embargo, volverá 'VALOR', 'valor', 'valor', etc ...

SELECT * FROM `table` WHERE `column` = 'value' 

La buena noticia es que si usted necesita para hacer una consulta entre mayúsculas y minúsculas, es muy fácil de hacer uso de la BINARY operador, lo que obliga a un byte a byte de comparación:

SELECT * FROM `table` WHERE BINARY `column` = 'value' 
49

para mejorar la excelente respuesta de Santiago:

es mejor poner BINARY frente a la constante en su lugar:

SELECT * FROM `table` WHERE `column` = BINARY 'value' 

Poner BINARY en frente de column impedirá el uso de cualquier índice en esa columna.

+0

¿Cómo agregarlo en "ME GUSTA"? –

+0

@Purushotamrawat simplemente reemplace = con LIKE ... SELECT * FROM 'table' WHERE' column' LIKE BINARY '% value%' – NVG

16

Si bien la respuesta que se muestra es correcta, le sugiero que si su columna debe contener cadenas sensibles a mayúsculas, lea the documentation y modifique la definición de la tabla en consecuencia.

En mi caso esto equivalía a definir mi columna como:

`tag` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' 

Esto es en mi opinión preferencial a ajustar sus consultas.

+1

He editado para arreglar lo que estoy seguro era un error tipográfico que era precisamente lo contrario de lo que querías decir Sin embargo, creo que debo notificarte (y dado que se trata de un cambio de dos caracteres, el sitio no te notificará automáticamente). Suponiendo que esté satisfecho con el cambio, siéntase libre de marcar mi comentario como obsoleto y dejar que se nuble. (Y si me equivoqué, gríteme) –

+1

esta debería ser la respuesta aceptada. – mathheadinclouds

Cuestiones relacionadas