我已經發現我需要使用substr/instr或正則表達式,但閱讀有關這些文檔,我無法完成它... 我在Oracle 11.2上。Oracle特定字符後的子字符串
所以這裏是我的。 字符串的列表喜歡:
743H5-34L-56
123HD34-7L
12HSS-34R
23Z67-4R-C23
我需要的是數(長度1或2)之後的第一個「 - 」,直到有一個自帶「L」或「R」。
有沒有人建議?
我已經發現我需要使用substr/instr或正則表達式,但閱讀有關這些文檔,我無法完成它... 我在Oracle 11.2上。Oracle特定字符後的子字符串
所以這裏是我的。 字符串的列表喜歡:
743H5-34L-56
123HD34-7L
12HSS-34R
23Z67-4R-C23
我需要的是數(長度1或2)之後的第一個「 - 」,直到有一個自帶「L」或「R」。
有沒有人建議?
regexp_replace(string, '^.*?-(\d+)[LR].*$', '\1')
另一個版本(不花哨lookarounds :-):
with v_data as (
select '743H5-34L-56' val from dual
union all
select '123HD34-7L' val from dual
union all
select '12HSS-34R' val from dual
union all
select '23Z67-4R-C23' val from dual
)
select
val,
regexp_replace(val, '^[^-]+-(\d+)[LR].*', '\1')
from v_data
它匹配
+1對於正則表達式的解釋 – KrishPrabakar 2013-12-24 15:42:26
這樣做的伎倆,謝謝! 當人們對此沒有深入瞭解時,語法非常混亂......至少在創建語句時。諒解與我身邊的doku =) – 2013-04-09 09:13:18