【发布时间】:2019-03-11 14:52:00
【问题描述】:
我有一个唯一的字符串列表(最初的想法是表中的列名)。 任务是执行列表的最大可能缩写,因此列表保持不同。
例如AAA, AB可以缩写为AA, AB。 (但不是A, AB - 因为A 可能是AAA 和AB 的前缀)。
AAAA, BAAAA 可以缩短为 A, B。
但是A1, A2根本不能缩写。
这里是示例数据
create table tab as
select 'AAA' col from dual union all
select 'AABA' col from dual union all
select 'COL1' col from dual union all
select 'COL21' col from dual union all
select 'AAAAAA' col from dual union all
select 'BBAA' col from dual union all
select 'BAAAA' col from dual union all
select 'AB' col from dual;
预期的结果是
COL ABR_COL
------ ------------------------
AAA AAA
AAAAAA AAAA
AABA AAB
AB AB
BAAAA BA
BBAA BB
COL1 COL1
COL21 COL2
我管理了一个由四个子查询组成的蛮力解决方案,我不是故意发布的,因为我希望存在一个更简单的解决方案,我不想分散注意力。
顺便说一句,r 中有一个类似的函数,称为abbreviate,但我正在寻找 SQL 解决方案。欢迎使用其他 RDBMS 的首选 Oracle 解决方案。
【问题讨论】:
标签: sql r oracle distinct-values