我有一个表Employee如下。 “更改”列包含其值通过我的应用程序修改的列的名称。此列中的数据以逗号分隔。我需要以这样的方式查询此表,结果每行有一个更改。即用逗号分割Change列中的数据并获取相应的行。我不知道从哪里开始!请帮忙。
答案 0 :(得分:2)
让我们看看,您可以使用Oracle的regexp_substr
功能:
select distinct Id, Name, Address, trim(regexp_substr(Change,'[^,]+', 1, level))
from Employee
connect by regexp_substr(Change, '[^,]+', 1, level) is not null;
这适用于Change
列中任意数量的以逗号分隔的值。
请在此处查看有关rexexp_substr函数的文档:https://docs.oracle.com/cd/B12037_01/server.101/b10759/functions116.htm
答案 1 :(得分:1)
这里我尝试使用包含多个级别的regexp_substr
with temp as
(
select id, name, address, change from testemp
)
select id,name,address,trim(regexp_substr(change, '[^,]+', 1, levels.column_value)) change
from temp t,
table(cast(multiset(select level from dual
connect by level <= length (regexp_replace(change, '[^,]+')) + 1)
as sys.OdciNumberList)) levels;