2012-09-21 89 views
-4

我們有這樣的一個表:無效的ID在甲骨文

number branch code 
1000 center XXCO 
1001 xyz XXER 
1002 zyx XXRE 
2000 center2 YYCO 
2001 xyz YYER 
2002 zyx YYRE 

所有這一切都在他們的代碼末尾「CO」的項目是家長有同樣的前兩個符號中的代碼項目。

的任務是讓所有分支中的列表以及它們各自的父母,例如:

center xyz XXER 
center zyx XXRE 
center2 xyz YYER 
center2 zyx YYRE 

我試試下面的代碼:

SELECT b.branch, a.branch, a.code 
FROM tmp a JOIN tmp b ON 
left(a.code,2) = left(b.code,2) 
AND a.code NOT LIKE '%CO' AND b.code LIKE '%CO'; 

但我會在指向一個錯誤腳本中的「=左」位置。

ORA-00904: "LEFT": недопустимый идентификатор 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 
Error at Line: 3 Column: 17 

這是什麼原因?任何人都可以幫忙嗎?

+0

可能出現[Oracle中的LEFT函數]重複(http://stackoverflow.com/questions/11309247/left-function-in-oracle) – APC

+0

LEFT在Oracle中不是一個函數。它可能是用戶定義的函數,儘管這不太可能 – Ghost

回答

4

Oracle沒有LEFT函數 - 使用SUBSTR(a.code,1,2)代替(假設您想比較前兩個字符)。

1

Oracle中沒有LEFT函數。使用SUBSTR(代碼1,2)代替LEFT(代碼2)

+0

爲什麼要在Oracle文檔中列出LEFT:http://docs.oracle.com/cd/E17952_01/refman-5.1-zh/string-functions.html#function_left – stephenbayer

+0

@stephenbayer您提到的文檔是針對MySQL的,這是一種與傳統Oracle數據庫不同的數據庫引擎。甲骨文公司現在也擁有MySQL,但它是另一種產品。 – GTG

+0

啊,謝謝。我一直在使用那個文檔,想知道爲什麼這些例子不起作用。 – stephenbayer