ORACLE - 从字符串中选择数字的表达式

Posted

技术标签:

【中文标题】ORACLE - 从字符串中选择数字的表达式【英文标题】:ORACLE - expression that picks a number from string 【发布时间】:2021-09-27 18:06:46 【问题描述】:

我有这张表,我需要选择字母“kV”或“KV”之前的数字。同样在最后一个示例中,el 编号的开头没有空格。

这里是例子:

select device_name from table;

--device_name can be:

15518 - 132 Garden Plain 138 kV l/o 0405 result 138
ALLENIM 345 KV  ALL-RPM_I.  result=345
179 BLOO345 KV  TR84CT-P_I.  result= 345.  --on this case the number is withoutspace 

我可以使用什么样的正则表达式来选择这些数字?

问候

【问题讨论】:

【参考方案1】:

这里有一个选项:找到大写KV前面的数字,然后删除KV

SQL> with test (col) as
  2    (select '15518 - 132 Garden Plain 138 kV l/o 0405' from dual union all-- result 138
  3     select 'ALLENIM 345 KV  ALL-RPM_I.'               from dual union all-- result=345
  4     select '179 BLOO345 KV  TR84CT-P_I.'              from dual          -- result=345
  5    )
  6  select col,
  7    replace(regexp_substr(upper(col), '\d+(\s?)KV'), 'KV', '') result
  8  from test;

COL                                      RESULT
---------------------------------------- --------------------
15518 - 132 Garden Plain 138 kV l/o 0405 138
ALLENIM 345 KV  ALL-RPM_I.               345
179 BLOO345 KV  TR84CT-P_I.              345

SQL>

【讨论】:

以上是关于ORACLE - 从字符串中选择数字的表达式的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式选择字母数字字符

oracle中截取一个字符串中的数字

oracle正则表达式截取某个字符前的数字

ORACLE的正则表达式(摘自网上)

oracle 去掉字符,剩下数字

Java 正则表达式,替换图片,替换数字,和谐用语,复制文件