替换文本字段中的字符串

时间:2010-08-20 08:19:12

标签: sql mysql

我的数据库表中有一个列,其中包含少量文本行和低行数。在文本中,需要为每一行更改URL。在每行中,url可以存在多次。

我可以使用replace函数更改数据库表中文本字段中的所有网址,而不会影响同一列中的其他文本吗?

由于

2 个答案:

答案 0 :(得分:3)

使用REPLACE()

UPDATE table SET text = REPLACE(text, 'from', 'to')

精确起来:与http://url_from.com/http://url_to.com/

一样

答案 1 :(得分:0)

根据https://web.archive.org/web/20150521050102/http://sqlserver2000.databases.aspfaq.com:80/how-do-i-handle-replace-within-an-ntext-column-in-sql-server.html

发布的文章

我需要在文本字段中编写查找并替换CHAR(146)`。上面的文章为fort nText和相同的文本解决方案使用nText进行了以下更改:     - 来自nVARCHAR的VARCHAR(32)(32)     - 使用@lenOldString = DATALENGTH(@oldString)代替SET @lenOldString = DATALENGTH(@oldString)/ 2.

DECLARE @TextPointer BINARY(16), @TextIndex INT, @oldString VARCHAR(32), @newString VARCHAR(32), @lenOldString INT, @currentDataID INT;

SET @oldString ='''; SET @newString ='''';

如果CHARINDEX(@oldString,@ newString)> 0 开始 打印'退出以避免无限循环。'; 结束 其他 BEGIN

- 需要nText字段 --SET @lenOldString = DATALENGTH(@oldString)/ 2

- 将其用于文本字段 SET @lenOldString = DATALENGTH(@oldString)

DECLARE激怒了CURSOR 本地FORWARD_ONLY静态READ_ONLY FOR 选择 数据ID 从 dbo.tbData 哪里 PATINDEX('%'+ @ oldString +'%',TextData)> 0;

OPEN irows;

FETCH NEXT FROM irows INTO @currentDataID; WHILE(@@ FETCH_STATUS = 0) BEGIN

选择 @TextPointer = TEXTPTR(TextData), @TextIndex = PATINDEX('%'+ @ oldString +'%',TextData) 从 dbo.tbData 哪里 DataID = @currentDataID;

SELECT @TextPointer,@ TextIndex

WHILE ( 选择 PATINDEX('%'+ @ oldString +'%',TextData) 从 dbo.tbData 哪里 DataID = @currentDataID )> 0 BEGIN

选择 @TextIndex = PATINDEX('%'+ @ oldString +'%',TextData)-1 从 dbo.tbData 哪里 DataID = @currentDataID;

UPDATETEXT dbo.tbData.TextData @TextPointer @TextIndex @lenOldString @newString; 结束 FETCH NEXT FROM irows INTO @currentDataID; END

关闭irows; DEALLOCATE irows;

END