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')