2012-01-20 147 views
-4

使用子串和INSTR我不能夠創造出這樣的選擇查詢:在甲骨文

當我查詢:

SELECT DISTINCT PRODUCT_ID FROM SYSADM.TABLE; 

我得到的輸出:

EMA12345 

EMA4567844 

EMA4545455 

US12342 

NA4545454 

PRS767657 

現在我想要獲取的數據如產品id檢索到的是:

12345 

4567844 

4545455 

US12342 

NA4545454 

PRS767657 

這意味着除了以EMA開頭以外的每個產品ID都應該保持原樣,並且以EMA開頭的產品應該沒有EMA。

需要在另一個選擇查詢中附加此內容。不能使用程序。

+0

確定........................ – Shoban

回答

1

使用REPLACE功能:

SELECT DISTINCT REPLACE(PRODUCT_ID, 'EMA') FROM SYSADM.TABLE 
+0

非常感謝..此作品.. :) .. –

1
SELECT DECODE(INSTR(product_id, 'EMA'), 1, SUBSTR(product_id, 4), 
       product_id) AS my_column 
    FROM SYSADM.TABLE 

基本上,如果PRODUCT_ID的前三個字母是「EMA」,然後使用4字符的product_id結束,否則,使用整個PRODUCT_ID。

1

你可以鏈togethor替代語句,如:

select replace(replace(replace(product_id, 'EMA'), 'US'), 'NA') from sysadm.table; 

,或者按照here的選擇之一。

+0

哎呀抱歉,誤讀。以爲你想刪除所有的前綴。 –