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

SQLでvarchar列を複数の値として分割するにはどうすればよいですか?

    区切りリストで使用している区切り文字で値をラップし、それが区切りリストのサブ文字列であるかどうかを確認します(区切り文字もラップされています):

    SELECT r.Value
    FROM   AD_Ref_List r
           INNER JOIN xx_insert x
           ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' )
    WHERE  r.AD_Reference_ID = 1000448
    AND    x.xx_insert_id    = 1000283;
    

    whereClause

    にロジックを保持する必要があります

    本当に、しないでください。上記のクエリははるかに効率的です。

    しかし、そうしなければならない場合:

    SELECT Value
    FROM   AD_Ref_List
    WHERE  AD_Reference_ID = 1000448
    AND    value IN (
      SELECT REGEXP_SUBSTR( XX_DocAction_Next, '[^,]+', 1, LEVEL )
      FROM   xx_insert
      WHERE  xx_insert_id    = 1000283
      CONNECT BY LEVEL <= REGEXP_COUNT( XX_DocAction_Next, '[^,]+' )
    );
    


    1. MySQL –現在のユーザーを知るためのさまざまな方法

    2. データモデリングにおけるセキュリティアプローチ。パート3

    3. SQLServer2012の拡張イベントに対する重要な変更

    4. SQLiteException:不明なデータベース