【发布时间】:2017-03-29 01:33:23
【问题描述】:
使用 SQL,我正在尝试使用正则表达式更新列中的子字符串。
这是我的目标:
-
我的专栏中有 HTML 内容: 示例:
<a href="http://blabla.fr/blibli">Link1</a>
或具有多个链接的其他内容:
<p>BlaBlaBla</p>
<a href="http://blabla.fr/blibli">Link1</a>
<a href="http://blabla.fr/">Link2</a>
<a href="http://blabla.fr/test">Link3 </a>
(这个例子代表了一个完整的字符串,select的结果不多) - 我想删除不包含 'blibli' 的 url 中的 'http://'
所以我做了这个查询
UPDATE my_table SET my_col = replace(my_col,'http://','') where not regexp_like(my_col,'http://^((?blibli).)*$')
但这只有在列包含至少一个链接时才有效,就像我的第一个示例一样。 如果该列包含许多链接,则由于条件的原因,它不会更新任何内容。 (也许这样做有很多步骤?) 我试图看看 REGEXP_SUBSTR 但我认为我也无法用它来实现这一点。 第二个示例的预期结果是:
<p>BlaBlaBla</p>
<a href="http://blabla.fr/blibli">Link1</a>
<a href="blabla.fr/">Link2</a>
<a href="blabla.fr/test">Link3 </a>
感谢您给我的任何建议
【问题讨论】:
-
为了清楚起见,您的第二个示例是列值 - 即单个字符串 - 不是表中四行的值?
blibli是否总是 URL 的最后一部分,或者它可以在中间,或者至少总是路径中的一个级别(即它总是.../blibli"或.../blibli/...)? -
是的对不起,第二个例子中的所有值都包含在一个字符串中,“blibli”可以是任何地方。我编辑了我的帖子;)。感谢这一点