SQL如何从字符串中提取数字?
我正在处理一个SQL查询,它应该能够从文本字符串的开头提取不同/随机长度的数字 文本字符串:666魔鬼号不是8888。SQL如何从字符串中提取数字?,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我正在处理一个SQL查询,它应该能够从文本字符串的开头提取不同/随机长度的数字 文本字符串:666魔鬼号不是8888。 文本字符串:12345魔鬼号是我的PIN,即6666 我想加入一个专栏 666 12345 使用Substr和instr SELECT Substr (textstring, 1,instr(textstring,' ') - 1) AS Output FROM yourtable 结果: OUTPUT 666 12345 如果开头有文本,请使用此选项,例如aa12345
文本字符串:12345魔鬼号是我的PIN,即6666 我想加入一个专栏
666
12345
使用
Substr
和instr
SELECT Substr (textstring, 1,instr(textstring,' ') - 1) AS Output
FROM yourtable
结果:
OUTPUT
666
12345
如果开头有文本,请使用此选项,例如aa12345 devils number is my PIN,即6666。
,因为它使用REGEXP\u REPLACE
功能
SELECT REGEXP_REPLACE(Substr (textstring, 1,instr(textstring,' ') - 1), '[[:alpha:]]','') AS Output
FROM yourtable
SQL Fiddle:此版本使用正则表达式,无论前面是否有文本,它都会为您提供第一个数字,并且不使用可怕的嵌套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>
您希望将数字作为字符串或数字返回吗?我想这无关紧要-我需要它用于Excel输出。
regexp\u substr(t\u列“^\d+”)