oracle中获取字段中最后一个/后面的值

Miracle_lucy 2016-06-20 06:31:43
字段值例如:
/市场品牌中心
/市场品牌中心/品牌部/品牌组
/市场品牌中心/品牌部/品牌组/品牌一组
/商务中心/华北商务部

字段中/个数不确定,现在需要获取最后一个/后面的值
...全文
759 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
范海辛o 2016-06-21
  • 打赏
  • 举报
回复
引用 8 楼 wmxcn2000 的回复:
[quote=引用 7 楼 jingconner 的回复:]
你的字符集中哪个?我找一个试试[/quote] USERENV('LANGUAGE') ---------------------------------------------------- ENGLISH_TAIWAN.AL32UTF8
卖水果的net 2016-06-21
  • 打赏
  • 举报
回复
引用 7 楼 jingconner 的回复:
你的字符集中哪个?我找一个试试
范海辛o 2016-06-21
  • 打赏
  • 举报
回复
引用 6 楼 wmxcn2000 的回复:
[quote=引用 5 楼 jingconner 的回复:] [quote=引用 1 楼 wmxcn2000 的回复:]


咋你的中文反转不乱码啊
引用 1 楼 wmxcn2000 的回复:


水果的反转怎么不会乱码?[/quote] 反转中文,都有乱码的,这里只是借用了取他的长度,不要反转后的数据;[/quote] 我是这个意思,你看看,因为乱码所以获取不到第一个 '/' 的位置.
create table test_1(name varchar2(100)) ;
begin
  insert into test_1 values('/市场品牌中心');
  insert into test_1 values('/市场品牌中心/品牌部/品牌组');
  insert into test_1 values('/市场品牌中心/品牌部/品牌组/品牌一组');
  insert into test_1 values('/商务中心/华北商务部');
end;

select instr(reverse(name), '/') from test_1;
INSTR(REVERSE(NAME),'/') 
------------------------ 
0                        
0                        
0                        
0   
卖水果的net 2016-06-21
  • 打赏
  • 举报
回复
引用 5 楼 jingconner 的回复:
[quote=引用 1 楼 wmxcn2000 的回复:]


咋你的中文反转不乱码啊
引用 1 楼 wmxcn2000 的回复:


水果的反转怎么不会乱码?[/quote] 反转中文,都有乱码的,这里只是借用了取他的长度,不要反转后的数据;
范海辛o 2016-06-21
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:

SQL> create table test(name varchar2(100)) ;
Table created
SQL> begin
  2      insert into test values('/市场品牌中心');
  3      insert into test values('/市场品牌中心/品牌部/品牌组');
  4      insert into test values('/市场品牌中心/品牌部/品牌组/品牌一组');
  5      insert into test values('/商务中心/华北商务部');
  6  end ;
  7  /
PL/SQL procedure successfully completed
SQL> select substr(name , - instr(reverse(name),'/') +1) from test ;
SUBSTR(NAME,-INSTR(REVERSE(NAM
--------------------------------------------------------------------------------
市场品牌中心
品牌组
品牌一组
华北商务部
SQL> drop table test purge ;
Table dropped

SQL> 
咋你的中文反转不乱码啊
引用 1 楼 wmxcn2000 的回复:

SQL> create table test(name varchar2(100)) ;
Table created
SQL> begin
  2      insert into test values('/市场品牌中心');
  3      insert into test values('/市场品牌中心/品牌部/品牌组');
  4      insert into test values('/市场品牌中心/品牌部/品牌组/品牌一组');
  5      insert into test values('/商务中心/华北商务部');
  6  end ;
  7  /
PL/SQL procedure successfully completed
SQL> select substr(name , - instr(reverse(name),'/') +1) from test ;
SUBSTR(NAME,-INSTR(REVERSE(NAM
--------------------------------------------------------------------------------
市场品牌中心
品牌组
品牌一组
华北商务部
SQL> drop table test purge ;
Table dropped

SQL> 
水果的反转怎么不会乱码?
Miracle_lucy 2016-06-21
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:

SQL> create table test(name varchar2(100)) ;
Table created
SQL> begin
  2      insert into test values('/市场品牌中心');
  3      insert into test values('/市场品牌中心/品牌部/品牌组');
  4      insert into test values('/市场品牌中心/品牌部/品牌组/品牌一组');
  5      insert into test values('/商务中心/华北商务部');
  6  end ;
  7  /
PL/SQL procedure successfully completed
SQL> select substr(name , - instr(reverse(name),'/') +1) from test ;
SUBSTR(NAME,-INSTR(REVERSE(NAM
--------------------------------------------------------------------------------
市场品牌中心
品牌组
品牌一组
华北商务部
SQL> drop table test purge ;
Table dropped

SQL> 
引用 2 楼 z123zjf 的回复:
with t(str) as (select '/市场品牌中心' from dual union select '/市场品牌中心/品牌部/品牌组' from dual union select '/市场品牌中心/品牌部/品牌组/品牌一组' from dual union select '/商务中心/华北商务部' from dual) select regexp_replace(str, '.*/([^/]+)', '\1') from t
非常感谢二位!
Miracle_lucy 2016-06-21
  • 打赏
  • 举报
回复
加了一下限制,筛选出以组结尾的 就显示为组 不是则显示为空
CASE WHEN  Exmail LIKE '%组' THEN regexp_replace(Exmail, '.*/([^/]+)', '\1')  ELSE '' END 
z123zjf 2016-06-20
  • 打赏
  • 举报
回复
with t(str) as (select '/市场品牌中心' from dual union select '/市场品牌中心/品牌部/品牌组' from dual union select '/市场品牌中心/品牌部/品牌组/品牌一组' from dual union select '/商务中心/华北商务部' from dual) select regexp_replace(str, '.*/([^/]+)', '\1') from t
卖水果的net 2016-06-20
  • 打赏
  • 举报
回复

SQL> create table test(name varchar2(100)) ;
Table created
SQL> begin
  2      insert into test values('/市场品牌中心');
  3      insert into test values('/市场品牌中心/品牌部/品牌组');
  4      insert into test values('/市场品牌中心/品牌部/品牌组/品牌一组');
  5      insert into test values('/商务中心/华北商务部');
  6  end ;
  7  /
PL/SQL procedure successfully completed
SQL> select substr(name , - instr(reverse(name),'/') +1) from test ;
SUBSTR(NAME,-INSTR(REVERSE(NAM
--------------------------------------------------------------------------------
市场品牌中心
品牌组
品牌一组
华北商务部
SQL> drop table test purge ;
Table dropped

SQL> 

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧