如果里面只有一个|符号的话 下面这个应该满足了.. with t1 as ( select '111|广东' c1 from dual union all select '113|哈尔滨' c1 from dual union all select '222|湖南' c1 from dual union all select '333|内蒙古' c1 from dual union all select '444|俄罗斯' c1 from dual )select substr(c1,instr(c1,'|')-length(c1)) c1 from t1 c1 ----------------------- 1 广东 2 哈尔滨 3 湖南 4 内蒙古 5 俄罗斯
with t1 as
(
select '111|广东' c1 from dual union all
select '113|哈尔滨' c1 from dual union all
select '222|湖南' c1 from dual union all
select '333|内蒙古' c1 from dual union all
select '444|俄罗斯' c1 from dual
)select substr(c1,instr(c1,'|')-length(c1)) c1
from t1 c1
-----------------------
1 广东
2 哈尔滨
3 湖南
4 内蒙古
5 俄罗斯
TRANSLATE('123|甘肃', '0123456789|', ' '),
regexp_substr('123|甘肃', '[^|]+', 1, 2),
substr('123|甘肃', instr('123|甘肃', '|') + 1, length('123|甘肃'))
from dual;
一个字符截取,一个字符索引