关于数据库
Confluence页面内容的数据库表名为bodycontent
,HTML内容存储在名为body
的列中,该列是文本字段。我正在使用Postgres数据库。主键名为bodycontentid
我需要的结果
对于表格中的每一行,我需要在<image>
列中找到src
标记的所有出现body
属性以“http://images.mydomain.com/allImages/%”开头
示例
请说body
bodycontentid
= 12345包含以下文字:
<h1>Chapter 1</h1>
<image src="http://www.google.com/image/111.jpg"/>
<h1>Chapter 2</h1>
<image src="http://images.mydomain.com/allImages/222.jpg"/>
<h1>Chapter 3</h1>
<image src="http://images.mydomain.com/allImages/333.jpg"/>
运行此查询后的结果应返回:
bodycontentid
:12345
body
:http://images.mydomain.com/allImages/222.jpg
bodycontentid
:12345
body
:http://images.mydomain.com/allImages/333.jpg
我尝试了什么
我能够找到至少有一个关键字Im搜索的行(见下文),但我需要的是获得与我的查询匹配的每行所有关键字的列表。
SELECT *
FROM bodycontent
WHERE body LIKE '%http://images.mydomain.com/allImages/%'
答案 0 :(得分:1)
一种方法是使用regexp_split_to_table()
然后使用一些字符串操作:
select bc.bodycontentid,
left(rst.s, position('"' in rst.s) - 1) as domain
from bodycontent bc, lateral
regexp_split_to_table(bc.body, E'srce="') rst(s)
where rst.s like 'http://images.mydomain.com/allImages/%';