[SQLServer] equal to 操作での照合順序の競合を解決できません。
- 2007 2/27
- 投稿者 : flied_onion
異なるテーブルなどを結合するSQLにおいて
equal to 操作での照合順序の競合を解決できません
というエラーが表示される場合がある。
たとえば
互いに MODEL_IDという varchar列を持つ、TABLE_AとTABLE_Bにおいて
1 2 3 4 |
select TABLE_A.NAME, TABLE_B.PRICE from TABLE_A inner join TABLE_B on TABLE_A.MODEL_ID = TABLE_B.MODEL_ID |
とした場合、普通に問題のないSQLなのだが
TABLE_A が Japanese_Bin
TABLE_B が Japanese_CI_AI_KI
だったりすると、エラーとなる場合がある。
(SQL Serverの照合順序とは文字列の並び替えや比較に関連して出てくるキーワード。
文字の取り扱いが異なる2テーブルのvarchar列を比較するので問題になる。)
一時的には
1 2 3 4 |
select TABLE_A.NAME, TABLE_B.PLICE from TABLE_A inner join TABLE_B on TABLE_A.MODEL_ID = TABLE_B.MODEL_ID COLLATE Japanese_Bin" |
など、COLLATE句
を使用すれば解決するだろう。
本当はテーブル設計とかデータインポートの時に気をつけるべき。
See Also :
Microsoft SQL Server 2000 のインターナショナル機能
最近のコメント