SQL> edi 已写入 file afiedt.buf 1 with tb as 2 (select 1 id,'生产 销售' name from dual union all 3 select 2,'销售' from dual) 4 select distinct id,v_name 5 from (select id,substr(' '||name||' ',instr(' '||name||' ' ,' ',level)+1,2) v_name 6 from tb 7 connect by level<=length(' '||name||' ') and connect_by_root(id)=id) 8 where v_name is not null 9* order by id SQL> / ID V_NA ---------- ---- 1 生产 1 销售 2 销售
--来自读书笔记(wkc168和paddy) with tb as (select 1 id,'生产 销售' name from dual union all select 2,'销售' from dual) select distinct id,name from (select id,substr(' '||name||' ',instr(' '||name||' ' ,' ',level)+1,2) name from tb connect by level<=length(' '||name||' ')) WHERE REGEXP_LIKE(name, '[[:alpha:]]' ) order by id ID NAME ---------- ---- 1 生产 1 销售 2 销售
修改SELECT T.ID,REGEXP_SUBSTR(T.NAME,'销售|生产') FROM (SELECT ID,NAME FROM TABLE ) T
也不知道SQL写得对不对
1.按第一个空格截取name字段,只保留空格前面部分,将其ID和剩余name文本放入临时表
2.循环遍历临时表,按第一个空格截取name字段,插入原表。临时表更新为name剩余部分。如果剩余部分为空则删除。
3.临时表为空时退出循环。
已写入 file afiedt.buf 1 with tb as
2 (select 1 id,'生产 销售' name from dual union all
3 select 2,'销售' from dual)
4 select distinct id,v_name
5 from (select id,substr(' '||name||' ',instr(' '||name||' ' ,' ',level)+1,2) v_name
6 from tb
7 connect by level<=length(' '||name||' ') and connect_by_root(id)=id)
8 where v_name is not null
9* order by id
SQL> / ID V_NA
---------- ----
1 生产
1 销售
2 销售
with tb as
(select 1 id,'生产 销售' name from dual union all
select 2,'销售' from dual)
select distinct id,name
from (select id,substr(' '||name||' ',instr(' '||name||' ' ,' ',level)+1,2) name
from tb
connect by level<=length(' '||name||' '))
WHERE REGEXP_LIKE(name, '[[:alpha:]]' )
order by id ID NAME
---------- ----
1 生产
1 销售
2 销售
加工 销售
饮食服务
租赁、服务
零售、服务
安装、服务、批发、零售
批发 零售 服务
加工 销售
加工、生产、销售
零售 服务
加工 销售
加工 维修
零售 服务
批发 零售 服务
运输服务
加工 销售
生产、加工、销售
加工、销售
生产 销售 加工
设计、制作、代理、发布
设计、制作、发布、代理
运输 服务
零售 维修
租赁 维修
下面的ORACLE SQL 是查找同时含有(生产或销售)和其他类型的SQL
select * from TSM02_OTHER where (regexp_like(TSM02_OTHER.MANA_MODE_CODE,
'生产|销售')
and length(regexp_replace(TSM02_OTHER.MANA_MODE_CODE,
'[[:punct:]]|[[:blank:]]|生产|销售,
''))>1)