2011-11-08 114 views
1

在開發過程中,我遇到了一個奇怪的場景,使用DD與Macedonian_FYROM_90_CI_AS整理。對不同整理的奇怪查詢結果

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排序和查詢返回0711110000000在另一個數據庫上嘗試相同的測試。

有沒有人遇到同樣的問題,或者可以解釋一下?

+0

奇怪。 'select @ from @test_table WHERE numbers like N'071111%00000'' works。 –

+0

如果沒有人想出解釋,爲什麼這是預期的行爲可能值得報告爲[Microsoft連接](https://connect.microsoft.com/SQLServer/Feedback)上的一個可能的錯誤 –

+0

@MartinSmith他應該運行sp_helpdb,並告訴我們他的數據庫的排序規則,它也會發送到子表中 - 默認情況下。 –

回答

1

這確實是奇怪的行爲。我也注意到其他排序規則(Slovenian_100_CI_AS,Macedonian_FYROM_100_CI_AS,Finnish_Swedish_100_CI_AS ...),儘管在同一測試集上有一些預期的工作(Slovenian_CI_AS)。

我決定提交反饋給Microsoft Connect

+0

+1當你回答一個解釋時你能更新這個答案嗎? –

+0

我會相應地更新我的答案。 –

+1

@MartinSmith問題已經在SQL Server 2012中修復了,因爲後向兼容性問題,他們不打算在舊版本中修復它。如果需要修補程序,則應聯繫Microsoft CSS。 –

0

嘗試:

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