2

次のようなテーブルを持つSQLServer2000データベースがあります。

ModifyTime datetime
CompanyID smallint
ProductID smallint
ComponentID int
Disposition varchar(10)
Note text
NoteType varchar(256)

このクエリは失敗します:

UPDATE NoteTable
SET Disposition = 'Modified'
WHERE Disposition = '' 
    AND CompanyID = 10
    AND ProductID = 13
    AND ComponentID = 1
    AND NoteType = 'Customer'

エラーは次のとおりです。

IS NULLまたはLIKE演算子を使用する場合を除き、text、ntext、およびimageのデータ型を比較またはソートすることはできません。

列はありTEXTますが、クエリにはまったく関係していません。2つのテキストのようなフィールドは両方ともVARCHARです。

私は定期的JOINにフィールドでsを行い、このエラーなしNoteTypeで注文します。Disposition

手がかりはありますか?

4

1 に答える 1

0

よくあることですが、ここで尋ねる質問を単純化するときに、問題の実際の原因を除外しました。

実際には、UPDATEはASPアプリで発生し、ここで「Customer」として表した値は、パラメーターとしてプリペアドステートメントに渡されます。パラメータの作成では、長さが256のadVarCharではなく、長さが256のadLongVarCharを使用しました。したがって、問題となったのは、実際にはVARCHAR(256)NoteType列を比較する定数でした。パラメータタイプをプリペアドステートメントに固定すると、問題は解決しました。

ご迷惑をおかけして申し訳ありません。ご協力いただきありがとうございます。:-)

于 2013-01-23T01:30:12.010 に答える