SQL Case Sensitive String Compare

Como se comparam as cadeias de modo que a comparação só é verdadeira se os casos de cada uma delas forem iguais também. Por exemplo:

Select * from a_table where attribute = 'k'

...irá devolver uma linha com um atributo de 'K'. Não quero este comportamento.

 158
sql
Author: gbn, 2010-10-19

6 answers

Select * from a_table where attribute = 'k' COLLATE Latin1_General_CS_AS 
Fiz o truque.
 291
Author: amccormack, 2010-10-19 13:57:23

Você também pode converter esse atributo como case sensitive Usando esta sintaxe :

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

Agora a sua pesquisa será sensível a maiúsculas.

Se quiser tornar essa coluna insensível à case de novo, então use

ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CI_AS
 33
Author: Jugal, 2013-03-18 07:58:03

Você pode facilmente converter colunas para VARBINARY( comprimento máximo), o comprimento deve ser o máximo que você espera para evitar uma comparação defeituosa, é suficiente para definir o comprimento como o comprimento da coluna. Aparar coluna ajuda você a comparar o valor real exceto o espaço tem um significado e valorizado em suas colunas de tabela, esta é uma amostra simples e como você pode ver Eu aparar o valor das colunas e, em seguida, converter e comparar.:

CONVERT(VARBINARY(250),LTRIM(RTRIM(Column1))) = CONVERT(VARBINARY(250),LTRIM(RTRIM(Column2)))
Espero que isto ajude.
 17
Author: QMaster, 2014-12-01 22:48:55

Assim como outra alternativa que você poderia usar HASHBYTES, algo assim:

SELECT * 
FROM a_table 
WHERE HASHBYTES('sha1', attribute) = HASHBYTES('sha1', 'k')
 14
Author: Dave Sexton, 2016-08-10 08:56:15

Pode definir attribute como BINARY ou utilizar INSTR ou STRCMP para efectuar a sua pesquisa.

 4
Author: MatTheCat, 2010-10-19 13:56:40

Se usar o navegador SQL oracle, pode usar;

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

Se quiser devolver uma linha com um atributo de 'K' e 'k'. Você pode usar;

Select * from a_table where UPPER(attribute) = UPPER('k')
 -5
Author: elfekz, 2017-05-10 09:05:39