我的数据库表中有一个列,其中包含少量文本行和低行数。在文本中,需要为每一行更改URL。在每行中,url可以存在多次。
我可以使用replace函数更改数据库表中文本字段中的所有网址,而不会影响同一列中的其他文本吗?
由于
答案 0 :(得分:3)
使用REPLACE()
UPDATE table SET text = REPLACE(text, 'from', 'to')一样
答案 1 :(得分:0)
我需要在文本字段中编写查找并替换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