sql—是否可以在mysql中替换链接并使其目标为空?

bzzcjhmw  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(274)

我有一个名为description的数据库表列,在这个列中有大约1000行。每行可以包含多个链接。例如:

Some description text
<a href="example11.com">Example 11</a>
description text is continue
<a href="example22.com">Example 22</a>
more description text

我可以更新所有链接,并添加目标空白。在此示例中,文本应更改为:

Some description text
<a href="example11.com" target="_blank">Example 11</a>
description text is continue
<a href="example22.com" target="_blank">Example 22</a>
more description text

摘要是要更改链接并将目标添加为空。

<a href="example11.com">Example 11</a>

<a href="example11.com" target="_blank">Example 11</a>
uqcuzwp8

uqcuzwp81#

你可以用 REPLACE 函数将一段文本替换为另一段文本。
例如,以下内容将替换 <a href<a target="_blank" href ```
REPLACE(myField, '<a href', '<a target="_blank" href');

在您的问题中提供的文本上使用上述内容将输出以下内容:

Some description text
Example 11
description text is continue
Example 22
more description text

当然,这个 `target="_blank"` 不必遵循 `href` 所以这是非常有效的html。
然而,这并不是一个完美的解决方案。如果锚定标签的布局与 `<a href` (即一个双空格,另一个代替 `href` 直接在 `a` )那这就行不通了。
要更新数据,只需使用一个简单的 `UPDATE` 语句使用 `REPLACE` :

UPDATE MyTable
SET myField = REPLACE(myField, '<a href', '<a target="_blank" href');

一个简单的例子。
06odsfpq

06odsfpq2#

UPDATE test 
SET txt = REGEXP_REPLACE(txt, '(<a[^>]+href=[^>]+)>(.+<\/a>)', '$1 target="_blank">$2');

需要mysql 8+。
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=8d56f1ec010d206108f442224a14ea6d

相关问题