2013-01-22 51 views
2

我有一個SQL Server 2000數據庫,看起來像這樣的表:SQL Server 2000的抱怨比較TEXT/NTEXT列,但列是VARCHAR

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' 

錯誤是:

文本,ntext和圖像數據類型無法進行比較或排序,除非使用IS NU LL或LIKE運營商。

有一個TEXT列,但它根本不參與查詢。這兩個文本字段都是VARCHAR

我經常在NoteType字段上做JOIN s,並按Disposition排序,沒有這個錯誤。

任何線索?

+1

你確定列數據類型?如果你改變NoteType LIKE'Customer'會發生什麼? – YvesR

+8

桌子上有觸發器嗎?在查詢分析器/管理工作室中運行此更新時,能否發佈整個錯誤消息,包括「Msg xxx,...」等部分? –

回答

0

經常發生的情況是,當簡化問題到這裏問問題時,我將問題的實際原因分解了。

實際上,UPDATE發生在一個ASP應用程序中,並且我在這裏表示爲'Customer'的值作爲參數傳遞給準備好的語句。在創建參數時,我使用了長度爲256的adLongVarChar,而不是長度爲256的adVarChar。所以它實際上是我比較VARCHAR(256)NoteType列的常量,這是問題所在。當我將參數類型固定到準備好的語句時,問題就消失了。

對不起,打擾你,謝謝你的幫助。 :-)