我在Oracle SQL中正在努力處理查詢,希望從存儲在Oracle數據庫中的某些文本中獲取一些時間。Oracle sql:僅獲取子字符串的特定部分
Table :
kde_test (myString varchar(50))
Table contents (3 records):
'task1 - 6m'
'task2 - 66m'
'task3 - 666m'
我想只得到字符串的有趣的部分,是定時的,所以我想只能得到「6」,「66」 &「666」作爲結果。
搜查這個論壇了一下,此查詢最終站了起來,但似乎我不完全得到它,因爲它所返回的結果是: 6米 66米 666米
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%'
編輯:
由於一些解決方案(感謝已經快速響應)考慮到特定值(例如,所有3條關於「6米」結尾。),也許是最好要考慮到的值可以是:
Table contents (3 records):
'task1 - 6m'
'task2 - 58m'
'task3 - 123m'
它看起來像這樣可以簡化爲尋找空間的第二次出現和倒數第二之間的字符串,非-包括的。 –
沒問題,您可以簡單地使用SUBSTR和INSTR並使其動態化。用編輯後的值查看編輯後的答案。 –