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

regexp_substrを使用して、Oracleで区切り文字として文字列をスペースと文字で分割します

    SQLフィドル

    Oracle11gR2スキーマのセットアップ

    CREATE TABLE TEST( str ) AS
              SELECT 'Hello world - test-test! - test' FROM DUAL
    UNION ALL SELECT 'Hello world2 - test2 - test-test2' FROM DUAL;
    

    クエリ1

    SELECT Str,
           COLUMN_VALUE AS Occurrence,
           REGEXP_SUBSTR( str ,'(.*?)([[:space:]]-[[:space:]]|$)', 1, COLUMN_VALUE, NULL, 1 ) AS split_value
    FROM   TEST,
           TABLE(
             CAST(
               MULTISET(
                 SELECT LEVEL
                 FROM   DUAL
                 CONNECT BY LEVEL < REGEXP_COUNT( str ,'(.*?)([[:space:]]-[[:space:]]|$)' )
               )
               AS SYS.ODCINUMBERLIST
             )
           )
    

    結果

    |                               STR | OCCURRENCE |  SPLIT_VALUE |
    |-----------------------------------|------------|--------------|
    |   Hello world - test-test! - test |          1 |  Hello world |
    |   Hello world - test-test! - test |          2 |   test-test! |
    |   Hello world - test-test! - test |          3 |         test |
    | Hello world2 - test2 - test-test2 |          1 | Hello world2 |
    | Hello world2 - test2 - test-test2 |          2 |        test2 |
    | Hello world2 - test2 - test-test2 |          3 |   test-test2 |
    


    1. Android-GCMを使用してクライアントのsqliteデータベースを更新します

    2. 悪い習慣:キーを選択するときにディスクスペースのみに焦点を当てる

    3. Windows10でWorkbenchを使用してMySQL8をインストールする方法

    4. SQLステートメントでパーセンテージを計算する方法