次のようなものを使用すると
[ntext2] <> '1,032.5',
次のエラーが表示されます。
データ型 ntext と varchar は、等しくない演算子では互換性がありません。
考えられる最善の解決策は、比較がどの列タイプでも同じ方法で実装されている場合です。(<> 演算子は NVARCHAR と INT の両方に適用できます)。
次のようなものを使用すると
[ntext2] <> '1,032.5',
次のエラーが表示されます。
データ型 ntext と varchar は、等しくない演算子では互換性がありません。
考えられる最善の解決策は、比較がどの列タイプでも同じ方法で実装されている場合です。(<> 演算子は NVARCHAR と INT の両方に適用できます)。
ntext
データ型は廃止され、データ型が優先されますnvarchar(max)
。テーブルのデータ型を変更できる場合は、それが最適なソリューションです。varchar
次に、それをリテラルと比較しても問題ありません。
それ以外の場合は、比較する前に値をキャストする必要があります。
cast([ntext2] as nvarchar(max)) <> '1,032.5'
同様のデータ型の問題を解決する nvarchar リテラルの使用を検討することもできます。
cast([ntext2] as nvarchar(max)) <> N'1,032.5'
キャストしたくない場合は、次の MSDN スレッドで示されているように、LIKE
orを使用していくつかのシナリオでうまくいくことができます: http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/6bd4c661-ea0b -435f-af78-097e61549d41PATINDEX
ワイルドカードを使用しない LIKE 式は、(この場合) 等価性のテストとほぼ同等です。
この場合、式は次のようになります。
[ntext2] NOT LIKE '1,032.5'