在SQL中从不包含以下字符的字符串中提取数字

时间:2019-02-18 02:50:16

标签: sql oracle

所以我的街道地址如下:

123 Street Ave
1234 Road St Apt B
12345 Passage Way 

现在,我很难提取街道编号而不提取任何街道名称。

我只想要:

123
1234
12345

1 个答案:

答案 0 :(得分:1)

使用它的方式,有两个简单的选项可返回所需的结果。一个使用正则表达式(选择字符串中的第一个数字),而另一个使用正则表达式返回第一个子字符串(用空格分隔)。

SQL> with test (address) as
  2    (select '123 Street Ave' from dual union all
  3     select '1234 Road St Apt B' from dual union all
  4     select '12345 Passage Way' from dual
  5   )
  6  select
  7    address,
  8    regexp_substr(address, '^\d+') result_1,
  9    substr(address, 1, instr(address, ' ') - 1)  result_2
 10  from test;

ADDRESS            RESULT_1           RESULT_2
------------------ ------------------ ------------------
123 Street Ave     123                123
1234 Road St Apt B 1234               1234
12345 Passage Way  12345              12345

SQL>