假设我有以下字符串:'product = 1627; color = 45; size = 7'在表的某些字段中.我想查询颜色并得到45.
有了这个查询:
SELECT REGEXP_SUBSTR('product=1627;color=45;size=7', 'color\=([^;]+);?') "colorID"
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
我明白了:
colorID
---------
color=45;
1 row selected
Run Code Online (Sandbox Code Playgroud)
.
是否有可能获得匹配字符串的一部分 - 这个例子是45?
一种方法是使用REGEXP_REPLACE.您需要将整个字符串定义为正则表达式模式,然后只使用您想要的元素作为replace string.在此示例中,ColorID是整个字符串中的第三个模式
SELECT REGEXP_REPLACE('product=1627;color=45;size=7'
, '(.*)(color\=)([^;]+);?(.*)'
, '\3') "colorID"
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
可能会有较少的笨重的正则表达式解决方案,但这个肯定有效. 这是一个SQL小提琴.
| 归档时间: |
|
| 查看次数: |
8929 次 |
| 最近记录: |