鸡毛信,十万火急.提示:无法解决 equal to 操作的排序规则冲突

winnet 2005-08-20 12:36:07
delete bj_cpjg_jg_fl from bj_cpjg_jg_fl as a,#sz_temp as b where a.cpbh=@str_cpbh and a.wl_id = b.sz_wl

delete from bj_cpjg_jg_fl where cpbh=@str_cpbh and wl_id = (select sz_wl from #sz_temp where sz_wl like 'E%' )

为什么我在存储过中用上面二句语句(功能一样),都会出现以下提示:
服务器: 消息 446,级别 16,状态 9,过程 P_BJ_WLJS_QT,行 360
无法解决 equal to 操作的排序规则冲突。
...全文
357 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bugchen888 2005-08-22
  • 打赏
  • 举报
回复
SQL 排序规则名称
为 SQL 排序规则指定排序规则名称的单个字符串。

语法
< SQL_collation_name > :: =

SQL_SortRules[_Pref]_CPCodepage_<ComparisonStyle>

<ComparisonStyle> ::=
_CaseSensitivity_AccentSensitivity | _BIN

参数
SortRules

标识字母表或语言的字符串,当指定按字典排序时应用该字母表或语言的排序规则。例如 Latin1_General 或波兰语。

Pref

指定大写字母优先。

Codepage

指定标识排序规则所使用的代码页的 1 至 4 个数字的号码。CP1 指定代码页 1252,对于所有其它代码页指定完整代码页号码。例如,CP1251 指定代码页 1251,CP850 指定代码页 850。

CaseSensitivity

CI 指定不区分大小写,CS 指定区分大小写。

AccentSensitivity

AI 指定不区分重音,AS 指定区分重音。

BIN

指定使用二进制排序次序。
iwl 2005-08-20
  • 打赏
  • 举报
回复
zjcxc(邹建) 的没错 ,加上Chinese_PRC_CI_AS等对等的排序规则就ok
zjcxc 2005-08-20
  • 打赏
  • 举报
回复

CREATE TABLE #(
NAME VARCHAR(10) COLLATE database_default --或者创建临时表的时候指定与当前数据库一致的排序规则
)

--或者手工指定与当前查询使用的表中的对应列一致的排序规则
zjcxc 2005-08-20
  • 打赏
  • 举报
回复
应该是你的数据库采用了和tempdb数据库不同的排序规则造成的.

1. 可以强制指定排序规则解决,注意只加在字符列上

delete bj_cpjg_jg_fl from bj_cpjg_jg_fl as a,#sz_temp as b
where a.cpbh=@str_cpbh and a.wl_id collate Chinese_PRC_CI_AS= b.sz_wl

delete from bj_cpjg_jg_fl where cpbh=@str_cpbh and wl_id collate Chinese_PRC_CI_AS= (select sz_wl from #sz_temp where sz_wl like 'E%' )

Andy__Huang 2005-08-20
  • 打赏
  • 举报
回复
delete bj_cpjg_jg_fl from bj_cpjg_jg_fl as a,#sz_temp as b where a.cpbh=@str_cpbh and a.wl_id = b.sz_wl

這個句子的語法是錯誤的
Andy__Huang 2005-08-20
  • 打赏
  • 举报
回复
不用等號,用in

delete from bj_cpjg_jg_fl
where cpbh=@str_cpbh and wl_id in (select sz_wl from #sz_temp where sz_wl like 'E%' )
hlq8210 2005-08-20
  • 打赏
  • 举报
回复
把 bj_cpjg_jg_fl表和#sz_temp表 所有数据类型为字符类型和文本类型的列的排序规则改为数据库默认值
winnet 2005-08-20
  • 打赏
  • 举报
回复
我在原来的SQL服务器用得好好的,最近换了新服务器,重装SQL SERVER,把数据库
入到新服务器就出现这样的错误
winnet 2005-08-20
  • 打赏
  • 举报
回复
还有就是原来数据库的存储过程用的变量是不区分大小写的,现在在新数据就要区分大小变量.
如何解决.我不想一个一个地去改..太多了.
zhaoliang_chen 2005-08-20
  • 打赏
  • 举报
回复
up
winnet 2005-08-20
  • 打赏
  • 举报
回复
delete from bj_cpjg_jg_fl where cpbh=@str_cpbh and wl_id collate Chinese_PRC_CI_AS= (select sz_wl from #sz_temp where sz_wl like 'E%' )

邹大侠的这句是行的,,真的谢谢..
我的tempdb排序是Chinese_PRC_BIN的,,有什么办法可以改
为什么tempdb的排序规则会这样,我以前的都是Chinese_PRC_CI_AS
winnet 2005-08-20
  • 打赏
  • 举报
回复
邹建大侠:应该是你的数据库采用了和tempdb数据库不同的排序规则造成的.
那如何把tempdb的排序规则变成Chinese_PRC_CI_AS

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧