无法解析的equal to动作的定序冲突

在最近的工作中使用SQL数据库的时候出现以下错误。具体情况是这样的:

 

在插入数据前,创建了一个临时表#Tmp_Table。然后使用临时表里面的列表项与已有表的列表项进行join的对比。以下是比较具体的代码:

Create Table #Tmp_Special_List([ID][nvarchar](400) NULL, [Name][nvarchar](50) NULL, [Reason][ntext]NULL, [Remark][ntext]NULL);

 

Select 已有表的列表项.ID From (已有表 inner join #Tmp_Table on 已有表的列表项.ID=#Tmp_Table.ID)

以上会出现以下的错误

 

訊息 468,層級 16,狀態 9,行 1
無法解析 equal to 作業中 "Latin1_General_CI_AI" 與 "Chinese_Taiwan_Stroke_CI_AS" 之間的定序衝突。

 

上网找了找原因。原来SQL有以下特性:

一般繁体中文版 MSSQL 建置时多数人会用预设定序 Chinese_Taiwan_Stroke_CI_AS。但是其中一个资料库是从别的环境附加进来的,该资料库定序是用 Chinese_Taiwan_Stroke_BIN (或其他定序)。一般来说,在同一个资料库中的资料表的定序都会使用资料库预设值。此问题常发生于处理两个资料库的资料表进行JOIN关联之时而建立临时表#tbMain会使用TempDB资料库的空间与定序而TempDB资料库的定序使用服务器的定序设定所以当JOIN这两个不同定序的资料表时,字串栏位就无法进行比对而回应错误。解决方法要使用强制转换。可以在创建临时表的时候强制指定定序

 

Create Table #Tmp_Special_List([ID][nvarchar](400) COLLATE Chinese_Taiwan_Stroke_BIN NULL, [Name][nvarchar](50) COLLATE Chinese_Taiwan_Stroke_BIN NULL, [Reason][ntext] COLLATE Chinese_Taiwan_Stroke_BIN NULL, [Remark][ntext] COLLATE Chinese_Taiwan_Stroke_BIN NULL);

 

原文是以下网址:

http://blog.bestlong.idv.tw/2009/10/11/703

 


 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值