SQL SERVER 强制排序规则查询
2014-04-23 15:28
337 查看
有时会需要在2个DB之间的数据做比较, 但因为一些原因, 数据库的默认排序规则是不一样的, 例如
SELECT A.Col1, B.Col1, A.* FROM DB1.dbo.A LEFT JOIN DB2.dbo.B ON A.Code = B.Code
WHERE 1 = 1
ORDER BY A.Col2
则会报如下错误:
无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突。
注: 红色字体可能会有所不同
这时, 需要我们用指定的排序规则来解决, 添加下面黄底的语句(注: 红色字体需要按实际报错排序规则的来排序)
SELECT A.Col1, B.Col1, A.* FROM DB1.dbo.A LEFT JOIN DB2.dbo.B ON A.Code = B.Code COLLATE SQL_Latin1_General_CP1_CI_AS
WHERE 1 = 1
ORDER BY A.Col2
IN的写法
SELECT Col1, Col2
FROM Table1 WHERE Code COLLATE SQL_Latin1_General_CP1_CI_AS IN (
SELECT StdItemCode FROM #Temp1
)
SELECT A.Col1, B.Col1, A.* FROM DB1.dbo.A LEFT JOIN DB2.dbo.B ON A.Code = B.Code
WHERE 1 = 1
ORDER BY A.Col2
则会报如下错误:
无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突。
注: 红色字体可能会有所不同
这时, 需要我们用指定的排序规则来解决, 添加下面黄底的语句(注: 红色字体需要按实际报错排序规则的来排序)
SELECT A.Col1, B.Col1, A.* FROM DB1.dbo.A LEFT JOIN DB2.dbo.B ON A.Code = B.Code COLLATE SQL_Latin1_General_CP1_CI_AS
WHERE 1 = 1
ORDER BY A.Col2
IN的写法
SELECT Col1, Col2
FROM Table1 WHERE Code COLLATE SQL_Latin1_General_CP1_CI_AS IN (
SELECT StdItemCode FROM #Temp1
)
相关文章推荐
- SQL SERVER 2005 由于默认排序规则造成多数据库查询报错的问题
- sql server 2005 排序规则与大小写敏感 (sql server2005学习笔记1)
- SQL SERVER中对查询结果随机排序
- SQL SERVER中对查询结果随机排序
- 关于SQL SERVER排序规则
- SQL SERVER 的排序规则
- Sql Server 2000 排序规则修改
- SQL SERVER COLLATE排序规则
- 修改sql server服务器的排序规则
- SQL Server 排序规则修改
- SQL Server更改排序规则的实现过程
- 修改SQL server 2008服务器排序规则(转)
- SQL 表中记录查询排序随笔(sql server中order by使用方式小总结)
- 选择 SQL Server 排序规则
- 更改sql server 数据库排序规则
- (原创)处理Sql server在不同环境下排序规则不一致的问题(一)
- SQL Server中分页查询和排序问题
- SQL SERVER中对查询结果随机排序
- SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示
- Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L及由于排序规则不同导致查询结果为空的问题