【发布时间】:2018-10-19 20:55:18
【问题描述】:
考虑以下列行:
col
-------------------------
'{"day":"8","every":"2"}'
我正在尝试使用正则表达式从该字符串中获取 8 来计算日期。
到目前为止我有:
SELECT
regexp_replace(col, '{"day":[^0-9]', '') as "day"
FROM
mytable;
这给了我:
day
---------------
8","every":"2"}
我无法弄清楚如何从第一个数字向前过滤掉字符串的其余部分。在我的示例中,我只想要这一行的数字 8。
【问题讨论】:
-
我使用的是 11g。
-
正则表达式
^{"day":"(\d+).*}$替换为\1 -
完美。这样可行。你能解释一下 \1 是做什么的吗?
-
()字符捕获数字,\1表示“给我第一个捕获组”(在这种情况下是唯一一个)。 -
太棒了。谢谢你们!
标签: sql regex oracle regexp-replace