我现在在数据库中有两个表。
Table1
ID Value1 VText2 VText3
1 1XX1 text1 text1
2 2XX2 text2 text2
3 3XX3 text3 text3
Table2
ID OtherValue
1 1XX1
2 2XX2
这是我的表的简化版本。简而言之,表1中的Value1是varchar,而表2中的OtherValue也是Varchar。
我的目标是:
SELECT * From TABLE1 where Value1 in (SELECT OtherValue from Table2)
[执行此操作时,我遇到此错误:
无法解决之间的排序规则冲突在“ SQL_Latin1_General_CP1_CI_AS”和“ SQL_Latin1_General_CP1_CS_AS”中等于运算。
Desired end result:
ID Value1 VText2 VText3
1 1XX1 text1 text1
2 2XX2 text2 text2
我相信这是因为我在我的“ WHERE IN”子句中使用了VARCHAR值。有没有办法用varchars做到这一点?
这显然是在发生,因为两个表中的排序规则不同。
您可以手动进行转换。目前尚不清楚您想要什么,但类似这样:
WHERE Value1 COLLATE SQL_Latin1_General_CP1_CS_AS IN (SELECT OtherValue from Table2)
通常,同一数据库中的字符串应具有相同的排序规则。但是,可能会有不同的排序规则-只是这样的错误可能会弹出;)