20180706-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 ] 

更多内容,见公众号"IT小Chen"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值