排序问题

发布于 2024-11-02 19:11:36 字数 186 浏览 3 评论 0原文

我在数据库中的不同对象中得到不同的排序规则...

  • 表的排序规则是“SQL_SwedishStd_Pref_CP1_CI_AS”
  • 存储过程的排序规则是“SQL_Latin1_General_CP1_CI_AS”,

这在执行查询时产生了问题。 有人可以帮我吗?

提前致谢

Im getting different collation in different objects in a database...

  • Collation of Tables is 'SQL_SwedishStd_Pref_CP1_CI_AS'
  • Collation of Stored Procedure is 'SQL_Latin1_General_CP1_CI_AS'

Which is creating problem while executing query.
Can someone help me out?

Thanks In Advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

っ〆星空下的拥抱 2024-11-09 19:11:36

您必须根据您希望执行连接(或 where 子句)的排序规则来指定,

请参阅下面的示例,了解如何对此进行编码。

create table x( id int, name varchar(256) collate SQL_SwedishStd_Pref_CP1_CI_AS)
create table y( id int, name varchar(256) collate SQL_Latin1_General_CP1_CI_AS)

insert into x values (1, 'Filip')
insert into y values (1, 'Filip')

因此,如果您希望基于 Latin1 排序规则加入,您可以这样编写查询:

select * 
  from x
  join y 
    on x.name collate SQL_Latin1_General_CP1_CI_AS = y.name 

如果您希望基于瑞典语排序规则加入,您可以这样编写查询:

select * 
  from x
  join y 
    on x.name = y.name collate SQL_SwedishStd_Pref_CP1_CI_AS 

如果通过错误定义表创建了排序规则差异,您可以更改列切换排序规则:

alter table x alter column name varchar(256) collate SQL_Latin1_General_CP1_CI_AS

如果您随后像这样运行查询,则不会再出现错误:

select * 
  from x
  join y 
    on x.name = y.name

You will have to specify according to which collation you wish to do the join (or where clause)

See the example below on how to code this.

create table x( id int, name varchar(256) collate SQL_SwedishStd_Pref_CP1_CI_AS)
create table y( id int, name varchar(256) collate SQL_Latin1_General_CP1_CI_AS)

insert into x values (1, 'Filip')
insert into y values (1, 'Filip')

So if you wish to join based on Latin1 collation you write the query like this:

select * 
  from x
  join y 
    on x.name collate SQL_Latin1_General_CP1_CI_AS = y.name 

If you wish to join based on Swedish collation you write the query like this:

select * 
  from x
  join y 
    on x.name = y.name collate SQL_SwedishStd_Pref_CP1_CI_AS 

If the collation difference has been created by incorrectly defining the table you can alter the column to switch the collation:

alter table x alter column name varchar(256) collate SQL_Latin1_General_CP1_CI_AS

If you then run the query like this, no more errors will occur:

select * 
  from x
  join y 
    on x.name = y.name
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文