【发布时间】:2015-03-20 07:22:02
【问题描述】:
我最近发现我存储在数据库中的链接无法在新选项卡中打开(不是target="_blank")。我制作了这个添加它的脚本。
我的问题是,如果Preamble 列有多个链接,只有第一个将更新为target="_blank",我该如何为列中的所有链接运行此操作?
SELECT
STUFF(Preamble, CHARINDEX('>', Preamble, PATINDEX('%<a href%', Preamble)) - 1, 1, '" target="_blank"')
FROM
QuestionContainer
WHERE
Preamble LIKE '%<a href%'
序言列包含其他 HTML 标记和其他文本。
更新
因此,出于某种原因,我试图将target="_blank" 添加到锚标记的末尾,而我可以将其添加到开头。
一个简单的REPLACE(Preamble, '%<a href%', '<a target="_blank" href') 将连续命中所有事件并解决我的问题。 - 谢谢艾伦 S. 汉森
【问题讨论】:
-
update questioncontainer set preamble = replace(preamble, '<a href', '<a href target="_blank" ')之类的东西不会这样做吗? (当然这并没有考虑到你已经完成的那些,需要先将它们替换回来:))否则你需要编写一个循环/函数来拆分你的列并重新处理你的索引 -
这个。但前提是它们都没有它,否则你将不得不排除包含“_blank”的那些。
-
@AllanS.Hansen 序言列包含其他 HTML 标记和其他文本。
-
这就是为什么你需要替换
<a href以确保它不会在其他 html 上触发 -
REPLACE('<a href=some.website/default.asp">Department’s Purchasing and Procurement Instructions</a>', '<a href', '<a target="_blank" href');似乎有效,然后它只是用您的列替换实际文本并更新
标签: sql-server charindex