Я борюсь с запросом в Oracle SQL, желая получить некоторые тайминги из некоторого текста, хранящегося в Oracle db.Oracle sql: получить только определенную часть подстроки
Table :
kde_test (myString varchar(50))
Table contents (3 records):
'task1 - 6m'
'task2 - 66m'
'task3 - 666m'
Я хотел бы получить только интересную часть строки, будучи тайминги, так что я хотел бы получить только как результат «6», «66» & «666».
Искал этот форум немного, и встал с этим запросом в конце концов, но мне кажется, я не совсем понимаю, как результаты, которые он возвращает являются: 6м 66m 666m
select
CASE
WHEN myString like 'task1%' THEN substr(myString,9,INSTR(myString,'m',1,1)-1)
WHEN myString like 'task2%' THEN substr(myString,9,INSTR(myString,'m',1,1)-1)
WHEN myString like 'task3%' THEN substr(myString,9,INSTR(myString,'m',1,1)-1)
END
from kde_test
where myString like 'task%'
EDIT:
Поскольку некоторые решения (спасибо уже для быстрого реагирования) принимать во внимание конкретные значения (например, все 3 записи, оканчивающиеся на "6м.), может быть, лучше всего принимать во внимание значения могут быть:
Table contents (3 records):
'task1 - 6m'
'task2 - 58m'
'task3 - 123m'
Похоже, что это может быть упрощено, чтобы найти строку символов между вторым появлением пространства и последним, но один, не -inclusive. –
Нет проблем, вы могли бы просто использовать SUBSTR и INSTR и сделать его динамичным. Просмотрите отредактированный ответ с отредактированными значениями. –