我们都知道Text类型的字段不能进行<>,=等比较操作,也不能使用replace函数替换。
要比较Text类型,只能使用like.
如果不用like,有没有其它办法来进行比较呢?
答案肯定是有的,使用SUBSTRING函数转换。
--例子
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
IF OBJECT_ID('tempdb..#TestText') IS NOT NULL
DROP TABLE #TestText
CREATE TABLE #TestText (
Text1 text,
Text2 text,
varchar1 varchar(max),
varchar2 varchar(max))
INSERT INTO #TestText(Text1,
Text2,
varchar1,
varchar2)
VALUES('a text string for col1','a text string for col2','varchar_a','varchar_b')
--Text不可以这样操作
SELECT * FROM #TestText WHERE Text1 <> Text2
SELECT * FROM #TestText WHERE Text1 = 'a'
--nvarchar可以这样操作
SELECT * FROM #TestText WHERE varchar1 <> varchar2
--使用SUBSTRING函数,一切都可以解决了
SELECT * FROM #TestText WHERE SUBSTRING(Text1,1,datalength(Text1)) <> SUBSTRING(Text2,1,datalength(Text2))
SELECT * FROM #TestText WHERE SUBSTRING(Text1,1,datalength(Text1)) = 'a'
SELECT replace(SUBSTRING(Text1,1,datalength(Text1)),'a','b') FROM #TestText