70

次のようなものを使用すると

[ntext2] <> '1,032.5',

次のエラーが表示されます。

データ型 ntext と varchar は、等しくない演算子では互換性がありません。

考えられる最善の解決策は、比較がどの列タイプでも同じ方法で実装されている場合です。(<> 演算子は NVARCHAR と INT の両方に適用できます)。

4

2 に答える 2

76

ntextデータ型は廃止され、データ型が優先されますnvarchar(max)。テーブルのデータ型を変更できる場合は、それが最適なソリューションです。varchar次に、それをリテラルと比較しても問題ありません。

それ以外の場合は、比較する前に値をキャストする必要があります。

cast([ntext2] as nvarchar(max)) <> '1,032.5'

同様のデータ型の問題を解決する nvarchar リテラルの使用を検討することもできます。

cast([ntext2] as nvarchar(max)) <> N'1,032.5'
于 2010-08-22T21:58:48.973 に答える
17

キャストしたくない場合は、次の MSDN スレッドで示されているように、LIKEorを使用していくつかのシナリオでうまくいくことができます: http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/6bd4c661-ea0b -435f-af78-097e61549d41PATINDEX

ワイルドカードを使用しない LIKE 式は、(この場合) 等価性のテストとほぼ同等です。

この場合、式は次のようになります。

[ntext2] NOT LIKE '1,032.5'
于 2010-08-22T22:32:20.460 に答える