2

この問題を解決するにはどうすればよいですか?

where someNtext IN ('asd',asd1')

エラーが発生します:

メッセージ 402、レベル 16、状態 1、行 XXXXX
データ型 ntext と varchar は、等値演算子で互換性がありません。

4

3 に答える 3

5

INリストは、OR 条件の省略形です。このLIKE節はフィールドNTEXTTEXTフィールドで機能します。したがって、これら 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 ://Collat​​ions.Info/ にアクセスしてください。

于 2011-05-14T14:54:31.040 に答える
0

http://msdn.microsoft.com/en-us/library/ms187993.aspxから:

ntext、text、および image データ型は、Microsoft SQL Server の将来のバージョンで削除される予定です。新しい開発作業でこれらのデータ型を使用することは避け、現在それらを使用しているアプリケーションを変更することを計画してください。代わりに、nvarchar(max)、varchar(max)、および varbinary(max) を使用してください。

于 2011-05-15T10:25:11.513 に答える
-1

NText は比較できません。比較が必要な場合は使用しないでください nvarchar(MAX) を使用してください

于 2011-05-14T14:58:01.990 に答える