如何使用 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

根据我对您问题的理解,如果查询有效,请告诉我。

谢谢