SQL区分大小写的string比较
如何比较string,以便只有在每个string的情况相同的情况下才能进行比较。 例如:
Select * from a_table where attribute = 'k' …将返回一个属性为“K”的行。 我不想要这种行为。
 Select * from a_table where attribute = 'k' COLLATE Latin1_General_CS_AS 
诀窍了。
您还可以使用以下语法将该属性转换为区分大小写 :
 ALTER TABLE Table1 ALTER COLUMN Column1 VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CS_AS 
现在您的search将区分大小写 。
如果你想再次使该列不区分大小写 ,那就使用
 ALTER TABLE Table1 ALTER COLUMN Column1 VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS 
您可以轻松地将列转换为VARBINARY(最大长度),长度必须是您期望避免有缺陷的比较的最大长度。将长度设置为列长度就足够了。 修剪列可以帮助您比较除空格以外的实际值,并在表格列中进行赋值。这是一个简单的示例,正如您所看到的那样,修剪列值然后进行转换和比较:
 CONVERT(VARBINARY(250),LTRIM(RTRIM(Column1))) = CONVERT(VARBINARY(250),LTRIM(RTRIM(Column2))) 
希望这个帮助。
就像另一种select,你可以使用HASHBYTES,像这样:
 SELECT * FROM a_table WHERE HASHBYTES('sha1', attribute) = HASHBYTES('sha1', 'k') 
 您可以将attribute定义为BINARY或使用INSTR或STRCMP来执行search。 
 Select * from a_table where attribute @@ 'k' 
如果你使用oracle sql navigator,你可以使用;
 Select * from a_table where attribute = UPPER('k') 
如果你想返回一个属性为“K”和“K”的行。 您可以使用;
 Select * from a_table where UPPER(attribute) = UPPER('k')