首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"Hebrew_CI_AS“与"SQL_Latin1_General_CP1_CI_AS”的校对冲突

"Hebrew_CI_AS“与"SQL_Latin1_General_CP1_CI_AS”的校对冲突
EN

Stack Overflow用户
提问于 2020-02-25 13:50:48
回答 2查看 2.6K关注 0票数 1

在我工作的某些过程中,我编写了以下代码:

代码语言:javascript
复制
update a
set a.custName = b.custName
from #x as a inner join pl_Customer as b on a.Company_Code = b.Company_Code and a.cust = b.Cust

我发现了这个错误:

不能解决"Hebrew_CI_AS“和"SQL_Latin1_General_CP1_CI_AS”在相等于操作时的排序冲突。

我试着用这个来解决它:

代码语言:javascript
复制
update a
set a.custName = b.custName
from #x as a inner join pl_Customer as b on a.Company_Code = b.Company_Code and a.cust = b.Cust
collate Latin1_General_CI_AI;

但这仍然是错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-25 14:09:23

默认情况下,使用服务器的排序规则创建临时表。看起来服务器的排序规则是SQL_Latin1_General_CP1_CI_AS,而数据库的排序规则是Hebrew_CI_AS (实际上是列的),反之亦然。

可以通过在临时表的列定义中使用collate database_default来克服这一问题,例如:

代码语言:javascript
复制
create #x (
    ID int PRIMARY KEY,
    Company_Code nvarchar(20) COLLATE database_default,
    Cust nvarchar(20) COLLATE database_default,
    ...
)

这将使用当前数据库的排序规则(而不是服务器的排序规则)创建列。

票数 4
EN

Stack Overflow用户

发布于 2020-02-25 14:08:40

在临时表定义#x中,将排序规则DATABASE_DEFAULT添加到字符串列中,如下

代码语言:javascript
复制
custName nvarchar(xx) COLLATE DATABASE_DEFAULT NOT NULL
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60396188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档