我有一个SQL select,它在列的一个部分中有一个连接,在一个表中是AAA,在另一个表中是aaA。我想加入而不考虑案例。但它没有回答正确答案(我希望在此选择期间返回所有记录)
SELECT *
FROM
TABLE1
INNER JOIN TABLE2
ON lower(TABLE1.Col1) = lower(TABLE2.Col2);
我在选择但没有正确答案后添加 COLLATE Latin1_General_CS_AS 。 我将两列的排序规则设置为deafult数据库排序规则,但没有答案。
请帮助
答案 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)
如果您显示的代码没有返回您期望的行,则问题是除了字母大小写之外的问题。字符串中有不可打印的字符或其他字符,或者您正在查看错误的表或其他问题。对lower
或COLLATE
使用不区分大小写的排序规则(包含“CI”)将同时起作用。如果他们不工作,那就是别的了。