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

OracleSQLを使用して区切り文字の位置で文字列を分割する

    したがって、文字列を最も遠い区切り文字で区切りたいと思います。

    これは古い質問ですが、これは SUBSTRの単純な要件です。 およびINSTR 十分でしょう。 正規表現 まだ遅い およびCPU集中型 古いsubtsrおよびinstr関数よりも操作。

    SQL> WITH DATA AS
      2    ( SELECT 'F/P/O' str FROM dual
      3    )
      4  SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
      5         SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
      6  FROM DATA
      7  /
    
    PART1 PART2
    ----- -----
    F/P   O
    

    あなたが言ったように、あなたは最も遠い 区切り文字、それはからの最初の区切り文字を意味します 。

    アプローチは問題ありませんでしたが、 start_positionがありませんでした INSTRで 。 start_positionが負の場合INSTR 関数は、文字列の末尾からstart_position文字数をカウントバックし、文字列の先頭に向かって検索します。



    1. MySQLのMAX()とGREATEST():違いは何ですか?

    2. listunagg関数?

    3. SQLサーバーはwhere式の大文字小文字を無視します

    4. IRIWorkbenchでの新しいテーブルの作成