この問題を解決するにはどうすればよいですか?
where someNtext IN ('asd',asd1')
エラーが発生します:
メッセージ 402、レベル 16、状態 1、行 XXXXX
データ型 ntext と varchar は、等値演算子で互換性がありません。
この問題を解決するにはどうすればよいですか?
where someNtext IN ('asd',asd1')
エラーが発生します:
メッセージ 402、レベル 16、状態 1、行 XXXXX
データ型 ntext と varchar は、等値演算子で互換性がありません。
IN
リストは、OR 条件の省略形です。このLIKE
節はフィールドNTEXT
とTEXT
フィールドで機能します。したがって、これら 2 つのアイデアを組み合わせてこれを行うことができます。
WHERE (
someNtext LIKE N'asd'
OR someNtext LIKE N'asd1'
)
ただし、質問のコメントで @marc_s が示唆しているように、NVARCHAR(MAX)
すべての文字列関数が機能するため、優先されます ( SQL Server 2005 の時点で、、、およびデータ型は非推奨になっていますTEXT
) NTEXT
。次のようなインライン変換を実行できIMAGE
ます。
WHERE CONVERT(NVARCHAR(MAX), someNtext) IN (N'asd', N'asd1')
LIKE
しかし、それは条件付きの節を使用する場合ほどうまく機能しない可能性がありOR
ます。
注意:NTEXT
//NVARCHAR
データを扱うときはNCHAR
、常に文字列リテラルの前に大文字の "N" を付けるXML
のが最善です。そうしないと、データベースの既定の照合に関連付けられたコード ページでサポートされていない文字のデータが失われる可能性があります。
SQL Server での照合 / エンコーディング / Unicode / 文字列全般の操作の詳細については、https ://Collations.Info/ にアクセスしてください。
http://msdn.microsoft.com/en-us/library/ms187993.aspxから:
ntext、text、および image データ型は、Microsoft SQL Server の将来のバージョンで削除される予定です。新しい開発作業でこれらのデータ型を使用することは避け、現在それらを使用しているアプリケーションを変更することを計画してください。代わりに、nvarchar(max)、varchar(max)、および varbinary(max) を使用してください。
NText は比較できません。比較が必要な場合は使用しないでください nvarchar(MAX) を使用してください