VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1154|回复: 7

无法解决 equal to 操作中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-2 20:00:02 | 显示全部楼层 |阅读模式
Create Table #a (Sonum char(10))
Insert Into #a (Sonum)
select '05/6525'

select a.* from sohead a inner join #a on a.so_num = #a.Sonum

无法解决 equal to 操作中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
请教如何解决
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-5-15 23:00:01 | 显示全部楼层
可以只改成这样啊
select * from sohead where so_num in(select Sonum as so_num from #a)
回复

使用道具 举报

0

主题

28

帖子

25.00

积分

新手上路

Rank: 1

积分
25.00
发表于 2020-5-20 17:45:01 | 显示全部楼层
select a.* from sohead a inner join #a on a.so_num COLLATE database_default
= #a.Sonum COLLATE database_default
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-5-23 06:45:01 | 显示全部楼层

试了,但又出现这个错误:在应使用条件的上下文(在 'COLLATE' 附近)中指定了非布尔类型的表达式。

能告诉我为什么吗?
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-7-5 17:15:01 | 显示全部楼层
表sohead字段so_num的Collate跟数据库默认的Collate不一样造成的,创建临时表,对字符类型的字段使用数据库默认的Collate,如果这个跟表的字段Collate不同时,SQL Server无法对这两个字段进行比较

解决:把sohead字段so_num的Collate改成跟数据库默认的一致,或者改数据库默认的Collate,或者创建临时表时指定Collate
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-26 17:30:02 | 显示全部楼层
    选择你的哪个数据库,右键属性,在那个选项设置下面有一个排序规则,把他改一下就可以了
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-9-3 10:00:02 | 显示全部楼层
数据库属性>选项>排序规则>Chinese_PRC_CI_AS

OK
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-9-3 10:15:01 | 显示全部楼层
可能是安装SQL的时候字符集选错了,或者SQL的兼容性问题,设为兼容(不过有风险的,我的都不敢乱设置)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表