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) https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008-r2/ms187365(v=sql.105) 从 text、ntext 或 image 列读取 text、ntext 或 image 值,从指定的偏移量开始读取指定的字节数。 语法: READTEXT { table.column text_ptr offset size } [ HOLDLOCK ] ……
