2017-05-23 113 views
0

我試圖使用Regexp_substr從屬性字段中提取單元號。 以下是查詢。Oracle查詢Regexp_substr

regexp_substr(PROPERTY,'(#)[^\S]+ ') 

雖然有些結果是正確的,但其他人回來象下面這樣:

#05-08 DOVER PARKVIEW 

我可以知道我需要做的,忽略所有的字母或措辭? 謝謝。

+2

那麼,什麼是輸入字符串,什麼是你需要的結果呢?順便說一句,Oracle 11g/12g或更老? –

+2

你打算與'[^ \ S]'匹配嗎? –

+0

我試圖僅匹配單元號碼,即#05-08。但是,這只是一種格式,其他單元號碼看起來像#19-1215或#06-143 –

回答

1

[^\S]模式匹配任何字符,但匹配\和大寫字母S

您需要捕獲1+位數字與-#後再次1+數字和提取匹配的那部分只能用

regexp_substr(PROPERTY, '#(\d+-\d+)', 1, 1, NULL, 1) 

最後1參數告訴正則表達式引擎的內容提取的ID爲1的捕獲組(它是該模式中唯一的捕獲組)。

  • # - 字面#
  • (\d+-\d+) - 捕獲組1個匹配:
    • \d+ - 1或多個數字
    • - - 連字符
    • \d+ - 1或多個數字。

online demo

select regexp_substr('#05-08 DOVER PARKVIEW', '#(\d+-\d+)', 1, 1, NULL, 1) as RESULT from dual 

enter image description here