如何使用 SQL 替换特定 URL 下的内容?
How can i replace content under a specific URL using SQL?
我对更新和替换 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]。
我只想更改带有 [Url]='/flupke/%'
的页面中的内容
我必须运行查询什么?
提前致谢!
UPDATE AXY.dbo.TabUrls
SET Content = 'NEWCONTENT'
WHERE Content LIKE '%OLDCONTENT%'
AND URL LIKE '/flupke/%'
试试这个
DECLARE @T TABLE(CONTENT VARCHAR(100))
INSERT INTO @T VALUES
('
,('
,('
,('
,('http://whosebug.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
可以看出,只有 URL 中的“%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
根据我对您问题的理解,如果查询有效,请告诉我。
谢谢
我对更新和替换 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]。 我只想更改带有 [Url]='/flupke/%'
的页面中的内容我必须运行查询什么?
提前致谢!
UPDATE AXY.dbo.TabUrls
SET Content = 'NEWCONTENT'
WHERE Content LIKE '%OLDCONTENT%'
AND URL LIKE '/flupke/%'
试试这个
DECLARE @T TABLE(CONTENT VARCHAR(100))
INSERT INTO @T VALUES
('
,('
,('
,('
,('http://whosebug.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
可以看出,只有 URL 中的“%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
根据我对您问题的理解,如果查询有效,请告诉我。
谢谢