- - PR -
SQL ServerのLike文について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-29 15:44
いつも参考にさせて頂いております。
現在、SQL Server2005のβ版を使用しています。 SQLでLikeを用いでデータの取得を行う際に何故か特定の文字で検索が引っかかりません。 例: (列:name) クーリング カーリング ケビン 上記のテーブルをTestとしたと仮定し、下記のSQL文を実行した所、データが取得できません。 SELECT * FROM Test WHERE name like '%クー%' 本来なら、「クーリング」が取得されるはずです。('%カー%'も同様でした。) 今まであまりSQL Serverを使用しての開発が無かった為、 知識が乏しいのですが、上記以外の検索は大抵取得できる事は確認致しました。 この文字の組合せだけ(全て試していないので分かりませんが・・・)が、Likeで取得できません。 もしご存知の方がいらしゃいましたら、お教えください。 よろしくお願いします。 | ||||
|
投稿日時: 2005-09-29 16:33
大変お騒がせ致しました。
この問題は、SQLServerの照合順序の問題でした。 現在使用しているDBは、「Japanese_90_CI_AS」を使用しているのが原因のようです。 本来ならば下記のようなSQL文になるようです。 SELECT * FROM Test WHERE name like '%クー%' COLLATE Japanese_BIN 本当にお騒がせ致しました。 | ||||
|
投稿日時: 2005-09-29 16:41
ちょっと、待ったあー。本当にバイナリ照合で合致したから OK なの? Japanese_90_CI_AS でも本当は合致しないといけないんじゃないかなあ。少なくとも SQL Server 2000 ではちゃんと '%クー%' でひっかけられますよ。2005 β の不具合だと思いたいところだけど、どーだろうか。 | ||||
|
投稿日時: 2005-09-29 17:42
うちでも再現しました。
SQL Server 2005 CTP July/2005です。 http://blogs.wankuma.com/naka/archive/2005/09/29/18540.aspx _________________ 中博俊 MSMVP Visual Studio C# Since 2004/04-2005/03, MCP http://naka.wankuma.com/ http://blogs.wankuma.com/naka/ naka@wankuma.com | ||||
|
投稿日時: 2005-09-29 18:32
SQL Server 2000でJapanese_CI_ASだとで大丈夫でした(char/nvarchar)。
SQL Server 2005の問題なのかな? | ||||
|
投稿日時: 2005-09-30 10:31
お疲れ様です。
Japanese_90_CI_AS またやってしまいましたね。。。 とりあえず,Japanese_90_CI_AS で 「クー」,「カー」を引っ掛けられる文字を洗い出しました。 「〇」です。 Unicode:12295,0x3007 漢数字のゼロですね。。。 またありえない文字と一致させてくれています。。。 そして,これら SHIFT_JIS ですと1文字ずれて隣同士なんです。 [code]----- SELECT [ID] ,[DATA] FROM [TestDB].[dbo].[JpnTest] WHERE [DATA] LIKE '%ク〇%' COLLATE Japanese_90_CI_AS [code]----- 自分の環境では Like に引っかかっています。 皆さんの環境での検証をお願いいたします。 この文字を洗い出した手順については,後ほどフォローアップしようと思います。 さて。。。どうしたものか。 とりいそぎ ---------- TimberLandChapel http://blogs.timberlandchapel.com/blogs/timberlandchapel/ | ||||
|
投稿日時: 2005-09-30 12:46
JulyとSepで試した結果あたりですね。
| ||||
|
投稿日時: 2005-09-30 13:02
間に合うかどうか。
とりあえず投票よろしく http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=c540b3c7-fce2-47cc-95e6-fd780172ebea |