我正在使用SQL进行查询,该查询应该能够从文本字符串的开头提取不同/随机长度的数字。
文字字符串:666个恶魔号码不是8888 文字字符串:12345恶魔号码是我的PIN码,即6666。
我想进入专栏
git clone https://github.com/wso2/siddhi.git
答案 0 :(得分:3)
使用Substr
&的组合instr
SELECT Substr (textstring, 1,instr(textstring,' ') - 1) AS Output
FROM yourtable
结果:
OUTPUT
666
12345
如果您在开头有文字,请使用此选项,例如aa12345 devils number is my PIN, that is 6666.
,因为它使用REGEXP_REPLACE
函数。
SELECT REGEXP_REPLACE(Substr (textstring, 1,instr(textstring,' ') - 1), '[[:alpha:]]','') AS Output
FROM yourtable
答案 1 :(得分:0)
此版本使用正则表达式,它为您提供第一个数字,无论它是否以文本开头,并且不使用可怕的嵌套instr / substr调用:
SQL> with tbl(data) as (
select '666 devils number is not 8888' from dual
union
select '12345 devils number is my PIN, that is 6666' from dual
union
select 'aa12345 devils number is my PIN, that is 6666' from dual
)
select regexp_substr(data, '^\D*(\d+) ', 1, 1, null, 1) first_nbr
from tbl;
FIRST_NBR
---------------------------------------------
12345
666
12345
SQL>