【问题标题】:Strange query results on different collation不同排序规则的奇怪查询结果
【发布时间】:2011-11-08 14:58:25
【问题描述】:

在开发过程中,我遇到了一个使用带有Macedonian_FYROM_90_CI_AS Collat​​ion 的DD 的奇怪场景。

declare @test_table  table
( numbers varchar(20) collate Macedonian_FYROM_90_CI_AS )

insert into @test_table values('0711110000000') 
insert into @test_table values('0711110000001')
insert into @test_table values('0711110000002')

select * from @test_table WHERE numbers like '071111%00000' 

应该返回0711110000000,但查询结果为空。

我使用SQL_Latin1_General_CP1_CI_AS Collat​​ion 在另一个数据库上尝试相同的测试,查询返回0711110000000

有没有人遇到过同样的问题,或者可以解释一下吗?

【问题讨论】:

  • 奇怪。 select * from @test_table WHERE numbers like N'071111%00000' 工作。
  • 如果没有人解释为什么这是预期的行为可能值得报告为Microsoft Connect上的一个可能的错误
  • @MartinSmith 他应该运行 sp_helpdb 并告诉我们他的数据库的排序规则,默认情况下也可以访问子表。

标签: sql-server collation sql-like


【解决方案1】:

这确实是一种奇怪的行为。我也注意到它与其他排序规则(Slovenian_100_CI_AS、Macedonian_FYROM_100_CI_AS、Finnish_Swedish_100_CI_AS ...)虽然在同一个测试集上一些按预期工作(Slovenian_CI_AS)。

我决定向Microsoft Connect提交反馈。

【讨论】:

  • +1 当他们做出解释时,你能更新这个答案吗?
  • @MartinSmith 该问题已在 SQL Server 2012 中修复。由于向后兼容性问题,他们不会在旧版本中修复它。如果需要修补程序,应联系 Microsoft CSS。
【解决方案2】:

尝试:

select * from test_table WHERE numbers like '071111%00000'  COLLATE SQL_Latin1_General_Cp1_CS_AS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    相关资源
    最近更新 更多