sql >> データベース >  >> RDS >> Oracle

ORACLE-null値を返すregexp_substr

    @Gary_Wが書いた 空のタグの処理方法が原因で、その正規表現パターンを使用して文字列を分割する際の問題。 (そして、が使命を帯びています...

    その投稿の代替アプローチはここでも機能し、パイプ区切り文字はエスケープされています:

    with t (str) as (
      select '1|CAT|DOG' from dual
      union all select '3|HARRY|GOAT|STACK' from dual
      union all select '6||LION|TIGER' from dual
    )
    select str, regexp_substr(str, '(.*?)(\||$)', 1, 2, null, 1) from t;
    
    STR                REGEXP_SUBSTR(STR,
    ------------------ ------------------
    1|CAT|DOG          CAT               
    3|HARRY|GOAT|STACK HARRY             
    6||LION|TIGER                        
    

    3番目の要素についても同様です:

    select str, regexp_substr(str, '(.*?)(\||$)', 1, 3, null, 1) from t;
    
    STR                REGEXP_SUBSTR(STR,
    ------------------ ------------------
    1|CAT|DOG          DOG               
    3|HARRY|GOAT|STACK GOAT              
    6||LION|TIGER      LION              
    

    そして4番目:

    select str, regexp_substr(str, '(.*?)(\||$)', 1, 4, null, 1) from t;
    
    STR                REGEXP_SUBSTR(STR,
    ------------------ ------------------
    1|CAT|DOG                            
    3|HARRY|GOAT|STACK STACK             
    6||LION|TIGER      TIGER             
    


    1. SQL ServerからC#のbyte []に​​varbinary(MAX)を取得します

    2. OracleD2kFormsに組み込まれているNAME_IN

    3. (まだ)存在しないテーブルまたは列を参照するSQL関数を作成します

    4. MySQL:GET_LOCKの制限と問題