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或使用INSTRSTRCMP来执行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')