在SQL Server中比较两个不区分大小写的char列

时间:2014-10-14 22:51:56

标签: sql sql-server compare varchar case-insensitive

我有一个SQL select,它在列的一个部分中有一个连接,在一个表中是AAA,在另一个表中是aaA。我想加入而不考虑案例。但它没有回答正确答案(我希望在此选择期间返回所有记录)

SELECT *
FROM
   TABLE1 
   INNER JOIN TABLE2
      ON lower(TABLE1.Col1) = lower(TABLE2.Col2);

我在选择但没有正确答案后添加 COLLATE Latin1_General_CS_AS 。 我将两列的排序规则设置为deafult数据库排序规则,但没有答案。

请帮助

2 个答案:

答案 0 :(得分:1)

我认为你想使用COLLATE SQL_Latin1_General_CP1_CI_AS。 CI是CaseIncensative。

select *
from t1
join t2 ON t1.Col1 COLLATE SQL_Latin1_General_CP1_CI_AS = t2.Col2 COLLATE SQL_Latin1_General_CP1_CI_AS

答案 1 :(得分:1)

如果您显示的代码没有返回您期望的行,则问题是除了字母大小写之外的问题。字符串中有不可打印的字符或其他字符,或者您正在查看错误的表或其他问题。对lowerCOLLATE使用不区分大小写的排序规则(包含“CI”)将同时起作用。如果他们不工作,那就是别的了。