首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在SQL Server上对具有不同排序规则的两个数据库执行连接操作时出现错误

在SQL Server上对具有不同排序规则的两个数据库执行连接操作时出现错误
EN

Stack Overflow用户
提问于 2010-02-19 01:33:27
回答 2查看 124.5K关注 0票数 63

我知道,我知道我在问题中写的东西我不应该感到惊讶。但我的情况是在一个继承的POS系统上工作得很慢,而我的前任显然没有意识到连接,所以当我查看一个加载了60秒的内部页面时,我发现它相当快,将这8个查询重写为一个带有连接的查询。问题是,除了不知道连接之外,他似乎还迷恋多个数据库,令人惊讶的是,他们使用不同的排序规则。事实是,我们使用所有的“正常”拉丁字符,说英语的人会考虑整个字母表,这整个事情将在几个月内停止使用,所以一个创可贴就是我所需要的。

长话短说,我需要某种方法来转换为单个排序规则,这样我就可以比较来自两个数据库的两个字段。

确切的错误是:

无法解决等于运算中"SQL_Latin1_General_CP850_CI_AI“和"SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-19 01:39:46

您可以在查询中使用collate子句(我现在找不到我的示例,所以我的语法可能是错误的-我希望它能为您指明正确的方向)

代码语言:javascript
复制
select sone_field collate SQL_Latin1_General_CP850_CI_AI
  from table_1
    inner join table_2
      on (table_1.field collate SQL_Latin1_General_CP850_CI_AI = table_2.field)
  where whatever
票数 129
EN

Stack Overflow用户

发布于 2010-02-19 02:26:20

一种通用的方法是强制将排序规则转换为DATABASE_DEFAULT。这删除了可能会更改的排序规则名称的硬编码。

对于临时表和表变量,以及您可能不知道服务器排序规则的地方(例如,您是将系统放在客户服务器上的供应商),它也很有用。

代码语言:javascript
复制
select
    sone_field collate DATABASE_DEFAULT
from
    table_1
    inner join
    table_2 on table_1.field collate DATABASE_DEFAULT = table_2.field
where whatever
票数 65
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2290753

复制
相关文章

相似问题

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