[英]alternatives to REPLACE on a text or ntext datatype
我需要更新/替换datatable.column中的数据。 该表有一个名为Content
的字段。 我正在使用REPLACE
功能。 由于列数据类型是NTEXT
,SQL Server不允许我使用REPLACE
函数。
我无法更改数据类型,因为此数据库是第三方软件表。 更改数据类型将导致应用程序失败。
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = REPLACE(Content,'ABC','DEF')
WHERE Content LIKE '%ABC%'
我收到此错误:
消息8116,级别16,状态1,行1参数数据类型ntext对替换函数的参数1无效。
有一个主键字段:name:ID - integer - 它是一个标识....所以我也需要考虑这个问题。 也许将身份设置为N临时。
请告知如何实现REPLACE功能?
约。 需要使用新解决方案更新3000个语句。
如果您的数据不会溢出4000个字符并且您使用的是SQL Server 2000或兼容级别为8或SQL Server 2000:
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = CAST(REPLACE(CAST(Content as NVarchar(4000)),'ABC','DEF') AS NText)
WHERE Content LIKE '%ABC%'
对于SQL Server 2005+:
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = CAST(REPLACE(CAST(Content as NVarchar(MAX)),'ABC','DEF') AS NText)
WHERE Content LIKE '%ABC%'
假设SQL Server 2000,以下StackOverflow问题应该解决您的问题。
如果使用SQL Server 2005/2008,则可以使用以下代码(从此处获取 ):
select cast(replace(cast(myntext as nvarchar(max)),'find','replace') as ntext)
from myntexttable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.