Я хотел бы написать SQL (Oracle SQL) запрос, чтобы выбрать часть строки из столбца после определенного символа - PullRequest
0 голосов
/ 27 сентября 2018

Я хотел бы написать sql (Oracle SQL) запрос для выбора части строки из столбца после определенного символа

Пример

Пожалуйста, см. Таблицу ниже:

Column A                                 

J:\JAVA\CIA TEST DBMS\AdobeDocument.pdf  
J:\JAVA\CIA TEST DBMS\wordDocument.docx  

Теперь для каждого значения в столбце A я хочу извлечь строку, подобную

.pdf из первого значения (J:\JAVA\CIA TEST DBMS\AdobeDocument.pdf)

.docx из второгозначение (J:\JAVA\CIA TEST DBMS\wordDocument.docx)

Здесь конкретный символ для строки.с конца строки

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Помимо предложения Каушика, вы можете попробовать regexp_substr() с шаблоном '[^.]*$':

with tab(str) as
(
 select 'J:\JAVA\CIA TEST DBMS\AdobeDocument2.pdf' from dual union all
 select 'J:\JAVA\CIA TEST DBMS\AdobeDocument.pdf'  from dual union all
 select 'J:\JAVA\CIA TEST DBMS\wordDocument.docx'  from dual
)
select distinct regexp_substr(str,'\.[^.]*$') as str 
  from tab;

STR
------
.pdf
.docx

ps просто используйте distinct перед выражением regexp_substr , чтобы получить отличные результаты типов файлов .

0 голосов
/ 27 сентября 2018

Используя метод SUBSTR + INSTR

Третий аргумент -1 из INSTR ищет точку в обратном направлении, SUBSTR здесь дает вам символы, начиная с этого индекса до конца.

WITH t(A)
AS
(
select 'J:\JAVA\CIA TEST DBMS\AdobeDocument.pdf' FROM DUAL UNION ALL
select 'J:\JAVA\CIA TEST DBMS\wordDocument.docx' FROM DUAL
)
select SUBSTR( A,INSTR(A ,'.',-1 )) FROM t;

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...