sensitive sql

SQL Case Sensitive String Compare



case sensitive sql server (6)

¿Cómo se comparan las cadenas para que la comparación sea verdadera solo si los casos de cada una de las cadenas son iguales también? Por ejemplo:

Select * from a_table where attribute = ''k''

... devolverá una fila con un atributo de ''K''. No quiero este comportamiento


Al igual que otra alternativa, podría usar HASHBYTES, algo como esto:

SELECT * FROM a_table WHERE HASHBYTES(''sha1'', attribute) = HASHBYTES(''sha1'', ''k'')


Puede convertir fácilmente columnas a VARBINARIO (Longitud máxima), la longitud debe ser el máximo que espera para evitar una comparación defectuosa. Es suficiente para establecer la longitud como la longitud de la columna. Recortar la columna te ayuda a comparar el valor real, excepto que el espacio tiene un significado y se valora en las columnas de tu tabla. Esta es una muestra simple y, como puedes ver, recorta el valor de las columnas y luego convierte y compara .:

CONVERT(VARBINARY(250),LTRIM(RTRIM(Column1))) = CONVERT(VARBINARY(250),LTRIM(RTRIM(Column2)))

Espero que esto ayude.


Puede definir el attribute como INSTR o usar INSTR o STRCMP para realizar su búsqueda.


También puede convertir ese atributo como sensible a mayúsculas y minúsculas utilizando esta sintaxis:

ALTER TABLE Table1 ALTER COLUMN Column1 VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CS_AS

Ahora su búsqueda será sensible a mayúsculas y minúsculas .

Si desea que la columna no sea ​​sensible de nuevo, utilice

ALTER TABLE Table1 ALTER COLUMN Column1 VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS


si usa el navegador sql de Oracle, puede usar;

Select * from a_table where attribute = UPPER(''k'')

si quieres devolver una fila con un atributo de ''K'' y ''k''. Puedes usar;

Select * from a_table where UPPER(attribute) = UPPER(''k'')


Select * from a_table where attribute = ''k'' COLLATE Latin1_General_CS_AS

Hizo el truco.