2012-01-20 2 views
-4

Я не смог создать этот Выберите запрос:Использование подстроки и Instr в Oracle

Когда я запрашиваю:

SELECT DISTINCT PRODUCT_ID FROM SYSADM.TABLE; 

я получаю результат, как:

EMA12345 

EMA4567844 

EMA4545455 

US12342 

NA4545454 

PRS767657 

Сейчас я хотите получить данные, такие как полученный идентификатор продукта:

12345 

4567844 

4545455 

US12342 

NA4545454 

PRS767657 

Это означает, что каждый идентификатор продукта, отличный от начального с EMA, должен появиться как есть, а те, которые начинаются с EMA, должны быть без EMA.

Необходимо добавить это в другой запрос. Невозможно использовать процедуру.

+0

ok ........................ – 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

К сожалению, неверно. Думал, что вы хотите удалить все префиксы. –

Смежные вопросы