2011-07-09 24 views
9

Estoy tratando de buscar una coincidencia exacta de una cadena en mysql. La cadena es 'nrew'. Pero cuando hago las consultas a continuación, todavía obtengo un resultado:cómo buscar una cadena exacta en mysql

SELECT UserID FROM sys_users WHERE UserID='NREW' 
SELECT UserID FROM sys_users WHERE UserID='NrEw' 

Por favor ayuda.

Respuesta

19
SELECT UserID FROM sys_users WHERE BINARY UserID='NREW' 
+0

Como una nota adicional, si coinciden en nombres de cuentas de usuario únicos, asegúrese de utilizar BINARY también de lo contrario, se supone que nombres como aimé.smith y aime.smith tienen el mismo valor independientemente de la diferencia de carácter especial. –

8

La colación por defecto que MySQL utiliza para hacer comparaciones entre mayúsculas y minúsculas. Debe especificar una intercalación de mayúsculas y minúsculas o un código binario. Puede hacer esto al crear la columna o en la consulta.

Por ejemplo:

SELECT UserID FROM sys_users WHERE UserID='NREW' COLLATE latin1_bin 

La colación correcta depende de su juego de caracteres. Para latin1, el predeterminado, puede usar latin1_bin. Para utf8, utf8_bin.

3

Un método consiste en utilizar LIKE BINARY en lugar de =:

SELECT UserID FROM sys_users WHERE UserID LIKE BINARY 'nrew'; 
5

Puede utilizar la palabra clave binaria,

SELECT UserID FROM sys_users WHERE BINARY UserID='nrew' 

se refieren a here

Cuestiones relacionadas