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

ORA-12728:正規表現の範囲が無効です

    正規表現は\を使用しません -を保護する ブラケット式-を入力するだけです 最初の文字として、開き角かっこの直後:

    IF REGEXP_LIKE('--,,::', '[\-,:]*')
    ...
    
    => ORA-12728: invalid range in regular expression
    

    興味があれば、 [\-,:]に遭遇したとき Oracleの理解: " \からの範囲内の任意の文字 へ または文字 " 。これにより例外が発生する理由は、 \です。 のようです ASCII値に応じて。また、Oracleは範囲を受け入れません。 終了値の後に開始値があります。

    一方:

     IF REGEXP_LIKE('--,,::', '[-,:]*')
    

    期待どおりに機能します。

    補足として、 [-,:] {0,1} "-の0回または1回の出現を意味します または または " [-,:]?と書くことができます 。


    1. CTEを使用して列の値を文字列に連結することは可能ですか?

    2. SQLiteサンプルデータベース

    3. テーブル行の編集GUIを使用してSQLServerテーブルに行を挿入する方法-SQLServer/TSQLチュートリアルパート101

    4. SELECT ... FOR XML PATH('')、1,1)の意味は何ですか?