在oracle 11g中查找子字符串重复

时间:2014-08-30 21:56:38

标签: sql oracle oracle11g

TableA包含许多记录,其中col1字段与前六个字符重复。

col1包含:football and footbcuu and footbcavity

我需要找到前五个字符重复的所有行。

SELECT * FROM tableaA A WHERE 
rowid > 
(SELECT min(rowid) FROM tableA B 
WHERE B.substr (col1, 1, 5)= A.substr (col1, 1, 5));

语句意外结束的错误,我认为只是括号。

有人可以帮助解决这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我在声明的末尾看到一个缺失的括号

SELECT * FROM tableaA A WHERE 
rowid > 
(SELECT min(rowid) FROM tableA B 
WHERE B.substr (col1, 1, 5)= A.substr (col1, 1, 6));

答案 1 :(得分:0)

除语法错误外,我不了解您尝试的逻辑。

以下查询获取前五个字符重复的所有行:

select a.*
from (select a.*, count(*) over (partition by substr(a.col1, 1, 5)) as cnt
      from tableA a
     ) a
where cnt > 1
order by a.col1;