更新数据类型'Text'上没有发生的表

时间:2017-09-01 10:04:56

标签: sql sql-server

update SubCategoryMaster 
set SubCategoryDescription='SHARPENERANDRULER' 
where SubCategoryDescription='SharpenerAndRuler' 

在此查询中,SubCategoryDescription的数据类型为TEXT。当我执行此查询时,出现错误:

  

Msg 402,Level 16,State 1,Line 1
  数据类型text和varchar在等于运算符中不兼容。

请建议

1 个答案:

答案 0 :(得分:0)

blog.sqlauthority.com有一个答案。以下是博客文章的相关部分,以防该链接死亡:

解决方案1 ​​:使用CONVERT函数转换数据类型以相互匹配。

将MyText的数据类型更改为nvarchar。

SELECT ID, MyText
FROM TestTable
WHERE CONVERT(NVARCHAR(MAX), MyText) = N'AnyText'
GO

解决方案2 :将列的数据类型从NTEXT转换为NVARCHAR(MAX)(TEXT到VARCHAR(MAX)

ALTER TABLE TestTable
ALTER COLUMN MyText NVARCHAR(MAX)
GO

现在您可以再次运行原始查询,它将正常工作。

解决方案3 :使用LIKE命令代替Equal命令。

SELECT ID, MyText
FROM TestTable
WHERE MyText LIKE 'AnyText'
GO