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

SQL定序冲突解决
本文介绍了在使用SQL数据库时遇到的定序冲突问题及其解决办法。具体是在进行跨数据库JOIN操作时,由于不同数据库间的字符集定序不一致导致无法正常比较字符串数据。通过为临时表指定统一的字符集定序,可以有效避免此类错误。
部署运行你感兴趣的模型镜像

在最近的工作中使用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

 


 

 


您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值