我在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>.
任何人都可以帮我解决这个问题吗?谢谢!
答案 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),你不应该得到任何截断!