你好,我有一個字串列,需要提取第三個字作為字串:
例如,我有一個字串列,需要提取第三個字。
舉例:
select notes from prod.client;
1024 xyxyxyx 138 1025 eivneini 345 4. 預期結果=138。
1028 swswsws 345 24090 bububu_ 1 2。 預期結果=345。
1028 acboru 345 1050 xwindiwf. 1 2. 預期result=345
1028 vnufenu 345 350 dnwufbuw 1 2。 預期結果=345。
1113 abudbu 138 1114 bububuw 12. 5 1. 預期 result=138
結果應該是一個字串值。
有人知道如何創建一個正則運算式來挑選這個嗎?
請注意
uj5u.com熱心網友回復:
你可以使用regexp_substr()。 對于第三個字串:
selectregexp_substr(notes, '[^ ] ', 1, 3)
from prod.client。
這里是一個db<>fiddle。
uj5u.com熱心網友回復:
你需要定義 "詞"。你的字串中的所有 "詞 "都是用空格隔開的,而所有不是空格的東西都是一個詞的一部分嗎?
例如:result=138是一個單獨的詞,還是由等號分隔的兩個 "詞"?
如果 "單詞是由空格隔開的,所有不是空格的東西都是單詞的一部分",那么Gordon Linoff的解決方案是正確的。
但要注意可能出現的問題。如果這是你的定義,那么字串Hello, world!就有兩個詞。Hello,(包括逗號!)和world!(包括驚嘆號)。
因此,回到我在本回復頂部的第一個觀察。定義 "字"。
在正則運算式中,慣例是將 "詞 "定義為連續字符的最大子串,這些字符要么是字母,要么是數字,要么是下劃線。這由轉義序列 w 表示(在 POSIX 標準和 Oracle 正則運算式中)。
所以,你的答案應該是這樣的:
select regexp_substr(notes, 'w '/span>, 1, 3)
from ........
如果你的定義不同--例如,如果你必須同時允許連字符和撇號--那么你需要修改為類似于
的內容select regexp_substr(notes, ' [[: alnum:]_''-] ', 1, 3)
from ........
注意兩個撇號用來代表一個字面的,記住連字符必須總是出現在括號內的運算式中的第一個或最后一個,以代表自己,否則它就是一個元字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/332518.html
標籤:
下一篇:OracleDB:資料顯示為#。
