2011/07/01

データ型 text と varchar は equal to 演算子では互換性がありません。

SQL Server のテーブルで、text型を使って列を定義したとき以下ののSQL文がエラーになる

select * from TABLE_A where field_a = 'aaa'


エラーの内容は以下のとおり

データ型 text と varchar は equal to 演算子では互換性がありません。


対策:

1.DBのデータ型を text から varchar()、nvarchar() に変更する。

2.SQL文で以下のように、データの型変換を記述する。(DBのデータ型を変更できないときはこれしかない)

select * from TABLE_A where CONVERT(nvarchar(20),field_a)= 'aaa'


もしくは、

select * from TABLE_A where CAST(field_a as nvarchar(20)) = 'aaa'