我有关于在SQl中更新和替换内容的问题。
假设我有数据库名称AXY,在AXY数据库中我有Tables文件夹,在Tables文件夹下我有.dbo.TabUrls。
以下是我如何替换我的内容:
UPDATE AXY..HtmlText
SET Content = REPLACE(CAST(Content AS NVARCHAR(MAX)), 'OLDCONTENT', 'NEWCONTENT')
WHERE Content LIKE '%OLDCONTENT%'
.dbo.TabUrls有[url]字段,用于存储所有网址。 我想仅在页面中使用[Url] ='/ flupke /%'
更改内容我必须运行什么查询?
提前谢谢!
答案 0 :(得分:2)
试试这个
DECLARE @T TABLE(CONTENT VARCHAR(100))
INSERT INTO @T VALUES
('http://stackoverflow.com/questions/33341107/flupke/somethnigelse')
,('http://stackoverflow.com/questions/33341107/flupke123/somethnigelse')
,('http://stackoverflow.com/questions/33341107/somethingflupke/somethnigelse')
,('http://stackoverflow.com/questions/33341107/nothing/somethnigelse')
,('http://stackoverflow.com/flupke/33341107/flupke/somethnigelse')
DECLARE @PATTERN_TO_FIND VARCHAR(20) = '%flupke%'
DECLARE @NEW_CONTENT VARCHAR(20) = 'NewContent'
SELECT
CONTENT
,IsMatch = PATINDEX(@PATTERN_TO_FIND,CONTENT)
,ToReplace = SUBSTRING(SUBSTRING(CONTENT, PATINDEX(@PATTERN_TO_FIND, CONTENT),LEN(CONTENT)),1,PATINDEX('%/%',SUBSTRING(CONTENT, PATINDEX(@PATTERN_TO_FIND, CONTENT),LEN(CONTENT)))-1)
,ReplacedContent =
CASE WHEN PATINDEX(@PATTERN_TO_FIND,CONTENT) > 0
THEN REPLACE(CONTENT,SUBSTRING(SUBSTRING(CONTENT, PATINDEX(@PATTERN_TO_FIND, CONTENT),LEN(CONTENT)),1,PATINDEX('%/%',SUBSTRING(CONTENT, PATINDEX(@PATTERN_TO_FIND, CONTENT),LEN(CONTENT)))-1),@NEW_CONTENT)
ELSE CONTENT
END
FROM @T
正如可以看出的那样,只有那些网址在哪里'%flupke%'正在被取代。 所以,在我看来,REPLACE函数应该是
REPLACE(CONTENT,SUBSTRING(SUBSTRING(CONTENT, PATINDEX(@PATTERN_TO_FIND, CONTENT),LEN(CONTENT)),1,PATINDEX('%/%',SUBSTRING(CONTENT, PATINDEX(@PATTERN_TO_FIND, CONTENT),LEN(CONTENT)))-1),@NEW_CONTENT)
您的更新查询应为
UPDATE AXY..HtmlText
SET Content = REPLACE(CONTENT,SUBSTRING(SUBSTRING(CONTENT, PATINDEX(@PATTERN_TO_FIND, CONTENT),LEN(CONTENT)),1,PATINDEX('%/%',SUBSTRING(CONTENT, PATINDEX(@PATTERN_TO_FIND, CONTENT),LEN(CONTENT)))-1),@NEW_CONTENT)
WHERE PATINDEX(@PATTERN_TO_FIND,CONTENT) > 0
如果查询符合我对您的问题的理解,请告诉我。
由于
答案 1 :(得分:0)
UPDATE AXY.dbo.TabUrls
SET Content = 'NEWCONTENT'
WHERE Content LIKE '%OLDCONTENT%'
AND URL LIKE '/flupke/%'