根据连字符拆分字符串
Split a string based on hyphen
我有这样的字符串
XX0099-X01
我想根据连字符将字符串分成两部分,即
XX0099
和 X01
我试过了
SELECT 'XX0099-X01',
SUBSTR('XX0099-X01',
1,
INSTR('XX0099-X01',
'-',
1
) -1
)
FROM dual
不确定如何获得第二部分。
我们有一个旧的遗留系统,它仍在使用 8i Oracle 数据库。
使用 substr
和 instr
的组合:
select
substr(s, 1, instr(s, '-') - 1),
substr(s, instr(s, '-') + 1)
from t;
如果支持,另一种方法是使用 regexp_substr
:
select
regexp_substr('XX0099-X01','[^-]+', 1, 1),
regexp_substr('XX0099-X01','[^-]+', 1, 2)
from dual;
如果您不能使用正则表达式 substring/replacement,这里有一个使用 Oracle 的基本字符串函数的选项:
SELECT SUBSTR(col, 1, INSTR(col, '-') - 1) AS first_part,
SUBSTR(col, INSTR(col, '-') + 1) AS second_part
FROM yourTable
我有这样的字符串
XX0099-X01
我想根据连字符将字符串分成两部分,即
XX0099
和 X01
我试过了
SELECT 'XX0099-X01',
SUBSTR('XX0099-X01',
1,
INSTR('XX0099-X01',
'-',
1
) -1
)
FROM dual
不确定如何获得第二部分。
我们有一个旧的遗留系统,它仍在使用 8i Oracle 数据库。
使用 substr
和 instr
的组合:
select
substr(s, 1, instr(s, '-') - 1),
substr(s, instr(s, '-') + 1)
from t;
如果支持,另一种方法是使用 regexp_substr
:
select
regexp_substr('XX0099-X01','[^-]+', 1, 1),
regexp_substr('XX0099-X01','[^-]+', 1, 2)
from dual;
如果您不能使用正则表达式 substring/replacement,这里有一个使用 Oracle 的基本字符串函数的选项:
SELECT SUBSTR(col, 1, INSTR(col, '-') - 1) AS first_part,
SUBSTR(col, INSTR(col, '-') + 1) AS second_part
FROM yourTable