2014-08-30 91 views
0

TableA包含許多記錄,其中col1字段爲前六個字符重複。在Oracle 11g中查找子串重複

col1中包含:足球和footbcuu和footbcavity

我需要找到其中前五個字符複製了所有行。

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

錯誤與意外結束的聲明,我認爲它只是括號。

有人可以幫助這個語法?

謝謝!

回答

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; 
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

您複製從OP的代碼錯字。五個字符的字符串永遠不會等於六個字符串。 – APC 2014-08-30 22:03:39

+0

我剛剛指出編輯的語法錯誤 – heximal 2014-08-30 22:06:48

+0

的來源修復了錯字,並且我在原始語言中有額外的括號...仍然有聲明結束 – user761758 2014-08-30 22:12:02