我正在使用“PrimaryDatabase”的当前数据库具有排序“SQL_Latin1_General_CP1_CI_AS
”,而我尝试访问的“SecondaryDatabase”具有排序“Arabic_CI_AS
”
我更改了SecondaryDatabase的排序规则并将其设置为“SQL_Latin1_General_CP1_CI_AS
”,并确保它已在表格中进行了更改。
但是,当我运行下面的查询时,我仍然会收到整理冲突。
select * from [MYSERVER].[SecondaryDatabase].[dbo].[SecondaryTableName]
where ltrim(rtrim([SecondaryTablename])) not in (select ltrim(rtrim(PrimaryFieldname)) from PrimaryTablename where PrimaryFieldName2=1)
答案 0 :(得分:2)
使查询起作用的一种方法是使用COLLATE
子句,以便对WHERE
子句的谓词中涉及的两个字段应用排序规则:
select *
from [MYSERVER].[SecondaryDatabase].[dbo].[SecondaryTableName]
where ltrim(rtrim([SecondaryFieldname])) COLLATE SQL_Latin1_General_CP1_CI_AS
not in (select ltrim(rtrim(PrimaryFieldname)) COLLATE SQL_Latin1_General_CP1_CI_AS
from PrimaryTablename
where PrimaryFieldName2 = 1)
可能不需要应用于COLLATE
的{{1}}子句,因为这是相应数据库的默认排序规则(因此PrimaryFieldname
可能已经有此排序规则)。
另一种解决方案是在字段级别更改排序规则,例如:
PrimaryFieldname