在文本或ntext数据types上替代REPLACE
我需要更新/replacedatatable.column中的数据。 该表有一个名为Content
的字段。 我正在使用REPLACE
function。 由于列数据types是NTEXT
,SQL Server不允许使用REPLACE
函数。
我无法更改数据types,因为此数据库是第三方软件表。 更改数据types将导致应用程序失败。
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText] SET Content = REPLACE(Content,'ABC','DEF') WHERE Content LIKE '%ABC%'
我收到此错误:
消息8116,级别16,状态1,行1参数数据typesntext对replace函数的参数1无效。
- 我可以用T-SQL解决这个问题吗? 有人有一个例子如何阅读和循环?
- 由于这是一次转换,也许我可以改变到另一种types,但我恐怕我搞乱了数据。
有一个主键字段:名称:ID – 整数 – 这是一个身份….所以我也需要考虑这一点。 也许将身份设置为N临时。
请告知如何实现REPLACEfunction?
约。 3000条语句需要更新一个新的解决scheme。
如果您的数据不会溢出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
关于这个问题的一个好文章:
你应该施放ntextvariables。
select cast(replace(cast(myntext as nvarchar(max)),'find','replace') as ntext) from myntexttable