SQL Server在TEXT字段中查找和替换

时间:2010-04-14 21:09:56

标签: sql-server-2005 text

我在SQL Server 2005中有一个从SQL Server 2000启动的数据库,它仍然使用TEXT类型字段而不是varchar(max)。

我需要在文本字段中查找并替换一串字符,但是我发现的所有如何执行此操作的示例似乎都不适合我。似乎UPDATETEXT命令要求显式设置两个参数“insert_offset”和“delete_length”,但我正在搜索的字符串可能会出现在文本中的任何一点,甚至是同一单元格中的几个点。我对这两个参数的理解是,我搜索的字符串将始终位于同一位置,因此insert_offset是UPDATETEXT命令将开始替换文本的文本中的空格数。

示例:需要找到:&lt;u&gt;并将其替换为:<u>

文字字段示例:

*Everyone in the room was <b>&lt;u&gt;tired&lt;/u&gt;.</b><br>Then they woke <b>&lt;u&gt;up&lt;/u&gt;.

任何人都可以帮我解决这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:68)

我终于明白了。它被隐藏在对jfrobishow发表的文章的评论中。非常感谢你。

以下是导致我找到解决方案的整个回复:

  

引用:最初由fredclown发布

     

如果使用SQL 2005,则可以使用文本类型替换。你拥有的一切   要做的就是下面......

     

field = replace(cast(field as varchar(max)),'string','replacement')

     

很容易就是馅饼。

     

Fredclown两个大拇指!命令   对我来说也像是一种魅力。这个   是我写的Update语句   在。中的文本字段中查找和替换   SQL Server 2005数据库

UPDATE TableName SET DBTextField = REPLACE(CAST(DBTextField AS varchar(MAX))
                                               ,'SearchText', 'ReplaceText')
FROM TableName
WHERE CHARINDEX('SearchText',CAST(DBTextField as varchar(MAX)))>0

注意:这可能截断 dbfield的大小,但如果是长文本列,则将其设为 nvarchar(max),你不应该得到任何截断!

相关问题