在 Oracle 数据库中,我有一个字符串,例如12.13 this is a test
. 使用 regexp_substr 我试图只提取13
. 那是点之后和空格之前的数字。我尝试了各种组合并且(string, '\.[0-9]{1,}')
最接近,但我仍然得到.13
. 有什么办法可以直接返回13
吗?
数据还包括诸如1.1
. 最多数字会去99.99
。
所有可能的数字格式是:#.#
, #.##
, ##.#
,##.##
鉴于输入字符串总是有前导数字和一个点,我们可以用 提取小数regexp_substr
。regexp_replace
也可以使用。
这里有几个例子regexp_substr
。这些通过包含一个针对所需数据的捕获组和一个subexpression
参数(中的最后一个参数regexp_substr
)来工作:
SELECT REGEXP_SUBSTR('12.13 this is a test','^[0-9]{1,}[.]{1}([0-9]{1,})',1,1,NULL,1) AS FRACTIONAL FROM DUAL;
结果:
FRACTIONAL
13
1 row selected.
SELECT REGEXP_SUBSTR('1.1 this is a test','^[0-9]{1,}[.]{1}([0-9]{1,})',1,1,NULL,1) AS FRACTIONAL FROM DUAL;
结果:
FRACTIONAL
1
1 row selected.
SELECT REGEXP_SUBSTR('99.99 this is a test','^[0-9]{1,}[.]{1}([0-9]{1,})',1,1,NULL,1) AS FRACTIONAL FROM DUAL;
结果:
FRACTIONAL
99
1 row selected.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句