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

区切られた文字列をOracleの行に変換します

    nullを許可しながら文字列を分割するために、このメソッドをリフします:

    select regexp_substr('A~^B~^C~D^E','(.*?)(~\^|$)', 1, level, null, 1) from dual
    connect by level < regexp_count('A~^B~^C~D^E','(.*?)(~\^|$)');
    
    REGEXP_SUBS
    -----------
    A
    B
    C~D^E
    

    リンクされた回答のように、貪欲ではない任意の文字を検索し、その後に~^の組み合わせを検索します (キャレットをエスケープしたので、~\^ )または行末。 regexp_substr() 呼び出しでは、オプションの引数を使用してsubexprも指定します -したがって、最初のグループ化のみを取得します(.*? )であり、2番目のグループに含まれる区切り文字自体ではありません。

    特定の要素が必要な場合は、リンクされた投稿にさらに近いです:

    select regexp_substr('A~^B~^C~D^E','(.*?)(~\^|$)', 1, 3, null, 1) from dual;
    
    REGEX
    -----
    C~D^E
    

    または、プロシージャでこれを実行しているときに、connect-byクエリを使用してコレクションにデータを入力し、複数の要素を表示する場合は、必要な要素を選択します。



    1. Cosd()がPostgreSQLでどのように機能するか

    2. C#で複数の要求に対して単一のSQL Server接続インスタンスを開いたままにする方法は?

    3. PostgreSQLのサブクエリから(複数の行と列)を更新または挿入します

    4. Oracle MD5ハッシュ関数を呼び出す方法は?