inc*_*ead 37 text sql-server-2005
我在SQL Server 2005中有一个从SQL Server 2000启动的数据库,它仍然使用TEXT类型字段而不是varchar(max).
我需要在文本字段中查找并替换一串字符,但是我发现的所有如何执行此操作的示例似乎都不适合我.似乎UPDATETEXT命令要求显式设置两个参数"insert_offset"和"delete_length",但我正在搜索的字符串可能会出现在文本中的任何一点,甚至是同一单元格中的几个点.我对这两个参数的理解是,我搜索的字符串将始终位于同一位置,因此insert_offset是UPDATETEXT命令将开始替换文本的文本中的空格数.
示例:需要查找:<u>并将其替换为:<u>
文本字段示例:
*Everyone in the room was <b><u>tired</u>.</b><br>Then they woke <b><u>up</u>.
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?谢谢!
inc*_*ead 69
我终于弄明白了.它被隐藏在对jfrobishow发表的文章的评论中.非常感谢.
以下是导致我解决方案的整个响应:
引用:最初由fredclown发布
如果使用SQL 2005,则可以将replace替换为文本类型.你所要做的就是以下......
field = replace(cast(field as varchar(max)),'string','replacement')
非常简单.
两个大拇指到Fredclown !!! 命令对我来说也像是一种魅力.这就是我在SQL Server 2005数据库的Text字段中编写我的Update语句以查找和替换的内容
UPDATE TableName SET DBTextField = REPLACE(CAST(DBTextField AS varchar(MAX))
,'SearchText', 'ReplaceText')
FROM TableName
WHERE CHARINDEX('SearchText',CAST(DBTextField as varchar(MAX)))>0
Run Code Online (Sandbox Code Playgroud)
注意:这可能会截断你的dbfield的大小,但如果是一个长文本列,请将其设为nvarchar(max),你不应该截断!