首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server :多个字符的索引

Server :多个字符的索引
EN

Stack Overflow用户
提问于 2015-03-20 07:22:02
回答 1查看 3.2K关注 0票数 0

最近我发现存储在数据库中的链接不会在新的选项卡中打开(没有target="_blank")。我做了这个脚本,把它加进去。

我的问题是,如果Preamble列有多个链接,那么只有第一个链接将使用target="_blank"更新,那么如何对列中的所有链接运行此链接?

代码语言:javascript
运行
复制
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')将命中一行中的所有事件并解决我的问题。-谢谢艾伦·汉森

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-20 07:27:09

尝试使用REPLACE函数:

代码语言:javascript
运行
复制
DECLARE @s NVARCHAR(MAX) = '<a href="some1"><a href="some2">'
SELECT REPLACE(@s, '>', ' target="_blank">') AS Link

输出:

代码语言:javascript
运行
复制
Link
<a href="some1" target="_blank"><a href="some2" target="_blank">

适用于你的陈述:

代码语言:javascript
运行
复制
SELECT REPLACE(Preamble, '>', ' target="_blank">')
FROM QuestionContainer
WHERE Preamble like '%<a href%'

编辑,根据@Allan评论:

代码语言:javascript
运行
复制
DECLARE @s NVARCHAR(MAX) = '<a href="some1"></a><a href="some2"></a>'
SELECT  REPLACE(REPLACE(@s, '>', ' target="_blank">'), '</a target="_blank">', '</a>') AS Link

编辑2:如果您有不同类型的标记,那么在开头添加替换字符串是有意义的:

代码语言:javascript
运行
复制
DECLARE @s NVARCHAR(MAX) = '<a href="some1"></a><a href="some2"></a><b>'
SELECT  REPLACE(@s, '<a ', '<a target="_blank" ') AS Link

输出:

代码语言:javascript
运行
复制
Link
<a target="_blank" href="some1"></a><a target="_blank" href="some2"></a><b>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29161398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档