如何在SQLite3中使用REGEXP来提取匹配的字符串(作为列值)
问题描述:
有没有一种方法可以使用REGEXP返回不仅仅是否存在匹配(即1
或0
),而是实际的匹配本身。举例来说,如果我有一个网址列,我想提取的URL的匹配部分(例如域):如何在SQLite3中使用REGEXP来提取匹配的字符串(作为列值)
SELECT url REGEXP '\w+\.com' AS domain
FROM urls
GROUP by domain;
不知道是否有REGEXP扩展之间的差异,但FWIW,我使用DB Browser for SQLite
答
REGEXP运算符仅返回布尔值,无论文本是否匹配。
如果你想获得更多的信息,你必须写一些其他的功能。
+0
接受此作为答案,因为我还没有找到任何其他(官方)替代方案,并且REGEXP运营商正如您所说。谢谢! –
答
甲骨文发现了一个提供REGEXP_SUBSTR函数: https://docs.oracle.com/cd/B12037_01/server.101/b10759/functions116.htm#SQLRF06303
这可能是看通过一些实际的功能代码创建一个类似于自己的功能非常有用
这不会返回匹配部分'SELECT * FROM urls WHERE url REGEXP'\ w + \。com''? – revo
@revo ..如果模式匹配会返回一行,否则不会。 OP正在要求模式本身。 –