我有这样的数据。
AB
ABC
ABCD
ABCDE
EF
EFG
IJ
IJK
IJKL
我只想得到ABCDE,EFG,IJKL。我怎么能这样做oracle sql?
char的大小为min 2但不具有固定长度,可以是2到100.
答案 0 :(得分:3)
如果您的意思是“每个字符串序列最长的字符串”,答案会有所不同 - 您不能保证所有字符串的长度都为4.相反,您希望找到添加字符串的字符串字母不是另一个字符串。
select t.str
from table t
where not exists (select 1
from table t2
where substr(t2.str, 1, length(t.str)) = t.str and
length(t2.str) = length(t.str) + 1
);
请注意,如果您的行数适中,则此查询的效果不会很好。
答案 1 :(得分:1)
选择字符串不是任何其他行的子字符串的所有行。目前尚不清楚这是否是你想要的。
select t.str
from table t
where not exists (
select 1
from table t2
where instr(t1.str, t2.str) > 0
);