2011-11-08 22 views
1

開発中に、Macedonian_FYROM_90_CI_AS照合で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を返しますが、nullで、クエリの結果でなければなりません。

SQL_Latin1_General_CP1_CI_ASを使用して別のDBで同じテストを試します。照合とクエリは0711110000000を返します。

誰も同じ問題に直面したことがありますか、これを説明できますか?

+0

Strange。 'select * from @ test_table N'071111%00000 'のような数字はどこで動作しますか? –

+0

なぜこれが期待されるのかについての説明が誰も出てこない場合は、[Microsoft Connect](https://connect.microsoft.com/SQLServer/Feedback)の可能性のあるバグとして報告する価値があります。 –

+0

@MartinSmith sp_helpdbを実行して、自分のDBの照合順序を子表にもデフォルトで渡してください。 –

答えて

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