Confronto tra maiuscole e minuscole di SQL Case

Come si confrontano le stringhe in modo che il confronto sia vero solo se i casi di ciascuna stringa sono uguali. Per esempio:

Select * from a_table where attribute = 'k' 

… restituirà una riga con un attributo di ‘K’. Non voglio questo comportamento.

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

Ha fatto il trucco

Puoi anche convertire quell’attributo come maiuscole e minuscole usando questa syntax:

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

Ora la ricerca sarà case sensitive .

Se si desidera rendere nuovamente insensibile la distinzione tra maiuscole e minuscole , quindi utilizzare

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

Puoi facilmente convertire le colonne in VARBINARY (Lunghezza massima), La lunghezza deve essere il massimo che ti aspetti di evitare un confronto difettoso, È sufficiente impostare la lunghezza come lunghezza della colonna. La colonna di ritaglio ti aiuta a confrontare il valore reale eccetto lo spazio ha un significato e valore nelle colonne della tabella, Questo è un semplice esempio e come puoi vedere I Ridimensiona il valore delle colonne e poi converti e confronta .:

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

Spero che questo aiuto.

Proprio come un’altra alternativa potresti usare HASHBYTES, qualcosa del genere:

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

È ansible definire l’ attribute come BINARY o utilizzare INSTR o STRCMP per eseguire la ricerca.

se usi oracle sql navigator, puoi usare;

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

se vuoi restituire una riga con un attributo di “K” e “k”. Puoi usare;

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