2017-06-10 20 views
0

最近、データベースのすべてのntextカラムタイプをnvarchar(max)に変換しました。 その後、関連するビューに対してEXECUTE sp_refreshviewを実行しました。私はビュー上(クラシックASPから)次のパラメータクエリを実行すると、nvarchar(max)のパラメータクエリがntextエラーとして表示される

はまだ、私はエラーを取得する: クエリ:

SELECT CARID 
FROM  vwCAR 
WHERE (1=1) 
AND  (Description LIKE '%'+ ? + '%') 
ORDER BY CARID; 

Error: The data types nvarchar and ntext are incompatible in the add operator (yet there are no longer any ntext columns!)

を私が実行している場合しかし、私はこのエラーを取得しないでください同じクエリを直接SQL Serverなしで? クエリ:としてパラメータ

SELECT CARID 
FROM vwCAR 
WHERE (1=1) 
AND  (Description LIKE '%test%') 
ORDER BY CARID; 

私は、クエリに変換し使用してみましたが、同じ結果でした: クエリ:

SELECT CARID 
FROM  vwCAR 
WHERE (1=1) 
AND  (CONVERT(NVARCHAR(MAX), Description) LIKE N'%'+ ? + '%') 
ORDER BY CARID; 

私が間違って何をやっているの?

追加情報: タイプを(MAX)ではなくnVarChar(4000)に変更しましたが、すべて正常に動作します。これは回避策ですが、問題を解決しました。

これからは、nVarChar(Max)タイプの列でLIKE条件を使用してパラメータクエリを実行することは可能でしょうか?

+0

解決策を使用して回答を追加できます。 – McNets

答えて

0

Iは、パラメータに間違ったフィールドタイプadLongVarWChar(203)を使用しました。 nvarchar(max)タイプにadVarWChar(202)を使用していたはずです。

下記のようにデータベースからフィールド型を直接取得した場合、nvarchar(max)型のために203が返されたので、その型に基づいてパラメータを設定すると仮定しました。
For each ofield in objRS.Fields Redim Preserve FieldTypes(1,x) FieldTypes(0,x) = ofield.type FieldTypes(1,x) = ofield.definedsize x = x + 1 Next

0

を前に設定してみてください(私はこれに新しいです..ポストのため@McNetsがクリーンアップありがとう):

セット@value = '%' + @value + '%';

は、次に使用:

(@valueような記述)

関連する問題