我試圖分解一個看起來像這樣的字串:
|5~13~3.750~159.75~66.563~P20~~~~Bundle A~~|
這是第二個示例供參考:
|106~10~0~120~1060.000~~~~~~~|
這是靜態大小專案的第三個示例:
|3~~~~~~~~~~~5:12|
示例 4:
|3~23~5~281~70.250~upper r~~~~~~|
|8~22~6~270~180.000~center~~~~~~|
|16~22~1~265~353.333~center~~~~~~|
有時同一字串中有多行。
我對為 regexp_substr 設定模式并不是非常熟悉,并且希望得到一些幫助!
該字串將始終包含“|” 在開頭和結尾處和 11 '~' 用于分隔我希望獲得的數字/文本值。還有一些數字字符有小數,而另一些則沒有。如果它有助于將值分開,如下所示:
|Quantity~ Feet~ Inch~ Unit inches~ Total feet~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|
正如您所看到的,如果沒有指定某些內容,它會顯示為空白,但它可能會將它們包含在另一個字串中,所有值都很少有資料。
對于這種特定情況,我相信 regexp_substr 將是我的最佳選擇,但如果有人有其他建議,我很樂意試一試!
這是到目前為止我能夠提出的公式(文本) :
REGEXP_SUBSTR({custbody_msm_cut_list},'[[:alnum:]. ] |$',1,1)
這使我可以提取字串中包含的所有匹配項,但如果排除某些欄位,則難以呈現正確的資料。
uj5u.com熱心網友回復:
TRIM(REGEXP_SUBSTR({custbody_msm_cut_list}, '^\|(([^~]*)~){1}',1,1,'i',2))
從字串的開頭,匹配管道字符|,然后匹配除波浪號之外的任何內容~,然后匹配波浪號。重復N次{1}。回傳這些重復中的最后一個。
您可以控制大括號中的整數處理多少個波浪號{1}
例如:
TRIM(REGEXP_SUBSTR('|Quantity~ Feet~ Inch~ Unit inches~ Total feet~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|', '^\|(([^~]*)~){1}',1,1,'i',2))
回傳“數量”
TRIM(REGEXP_SUBSTR('|Quantity~ Feet~ Inch~~~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|', '^\|(([^~]*)~){7}',1,1,'i',2))
回傳“打孔模式”
最終值Pitch是一個稍微特殊的情況,因為它后面沒有波浪號:
TRIM(REGEXP_SUBSTR('|~~~~~~~~~~ Radius~ Pitch|', '^\|(([^~]*)~){11}([^\|]*)',1,1,'i',3))
改編自https://stackoverflow.com/a/70264782/7885772
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/427356.html
