SQLServer型別text運算子不相容

chenoracle發表於2018-07-06

SQLServer 型別 text 運算子不相容

 

DB SQLServer 2012

問題:

Text 型別的列,不支援“ = ”運算子。

報錯如下:

訊息 402,級別 16,狀態 1,第 1 行

資料型別 text 和 varchar 在 equal to 運算子中不相容。


問題現象:

---create table test0706(id int,a text);

---insert into test0706 select id,ssfb as a from t1;

select * from test0706 where a='10';

訊息 402,級別 16,狀態 1,第 1 行

資料型別 text 和 varchar 在 equal to 運算子中不相容。


select * from test0706 where a in ('10');

訊息 402,級別 16,狀態 1,第 1 行

資料型別 text 和 varchar 在 equal to 運算子中不相容。

update test0706 set a=100 where id='2';

訊息 206,級別 16,狀態 2,第 1 行

運算元型別衝突: int 與 text 不相容

 

解決方案:

一: like

text型別查詢時不支援=,可以支援like

select * from test0706 where a like '10';

二:cast

select  * from test0706 where cast(a as nvarchar) = '10';

---同理也可以用於update

BEGIN TRAN 

update test0706 set a = cast('100' as text) where id=2;

COMMIT TRAN

---ROLLBACK TRAN

三: READTEXT (Transact-SQL)

從 text、ntext 或 image 列讀取 text、ntext 或 image 值,從指定的偏移量開始讀取指定的位元組數。

語法:

READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]

……

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2157454/,如需轉載,請註明出處,否則將追究法律責任。

相關文章