我正在尝试为 sql 正则表达式找到一种模式



我的字符串是prefvalue:CEROTG,我想匹配prefvalue:,但我想只打印CEROTG

Regex为prefvalue:(S+),但我不确定这个值来自哪里。如果它存储在列(单元格(中,这在很大程度上取决于您使用的RDBMS。有些查询不支持regex。

图案说明:

prefvalue:-与prefvalue:完全匹配

(...)-捕获组

S+-匹配除空白之外的任意字符中的一个或多个

要从模式返回您需要的内容,只需参考1的第一个捕获组

演示

编辑

此外,您可以添加边界,以确保您希望将其匹配为某个较长字符串的子字符串:^prefvalue:(S+)$

^-匹配字符串的开头

$-匹配字符串末尾

SQL fiddle演示

您不需要正则表达式。您可以使用简单的字符串函数:

SELECT SUBSTR( your_column, 11 ) AS prefvalue
FROM   table_name
WHERE  your_column LIKE 'prefvalue:%';

如果你有一些测试数据:

CREATE TABLE table_name ( your_column ) AS
SELECT 'prefvalue:CEROTG'   FROM DUAL UNION ALL
SELECT 'prefvalue:ABCD'     FROM DUAL UNION ALL
SELECT 'othervalue:NOTTHIS' FROM DUAL;

则输出为:

|PREVALUE||:--------||CEROTG||ABCD|

,如果您只想要CEROTG行:

SELECT SUBSTR( your_column, 11 ) AS prefvalue
FROM   table_name
WHERE  your_column = 'prefvalue:CEROTG';

输出:

|PREVALUE||:--------||CEROTG|

db<gt;小提琴这里

相关内容

最新更新