enter image description here如果3号船和4号船为空,而2号船不为空,那应该是城市州会发生什么情况
这是图片中的样本数据。
答案 0 :(得分:1)
我更喜欢老式的SUBSTR + INSTR
组合,如果与Gordon和Barbaros的建议相比,它们的查询返回的甚至不包含逗号的字符串似乎要好一些,而OP则表示
从1个字母到1个逗号之间提取城市
这里是一个比较:
SQL> with tab (addr) as
2 (
3 select 'RALEIGH, NC 27604-3229' from dual union all
4 select 'SUITE A' from dual union all
5 select 'COEUR D ALENE, ID 83815-8652' from dual union all
6 select '*O/S CITY LIMITS*' from dual
7 )
8 select addr,
9 substr(addr, 1, instr(addr, ',') - 1) littlefoot,
10 --
11 regexp_substr(addr, '[^,]+', 1, 1) gordon,
12 regexp_substr(addr,'[^,]+') barbaros
13 from tab;
ADDR LITTLEFOOT GORDON BARBAROS
---------------------------- --------------- -------------------- --------------------
RALEIGH, NC 27604-3229 RALEIGH RALEIGH RALEIGH
SUITE A SUITE A SUITE A
COEUR D ALENE, ID 83815-8652 COEUR D ALENE COEUR D ALENE COEUR D ALENE
*O/S CITY LIMITS* *O/S CITY LIMITS* *O/S CITY LIMITS*
SQL>
答案 1 :(得分:0)
如果要在第一个逗号之前使用该部分,可以使用regexp_substr()
:
select regexp_substr(addr, '[^,]+', 1, 1)
答案 2 :(得分:0)
只需将PullParser
与regexp_substr
模式一起使用
[^,]+
或者通过创建辅助表:
select regexp_substr(address,'[^,]+') as city
from tab;
答案 3 :(得分:0)
如果您不想使用regexp,则可以使用:
select substr(city,1,(instr(city,',')-1))
from mytable;