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

PLSQLでコンマ区切りのINパラメータを使用してクエリを実行する

    SELECT * FROM Table1 WHERE   
    Table1.PRODUCT LIKE ( select regexp_substr(I_PRODUCT,'[^,]+', 1, level) from dual
                         connect by regexp_substr(I_PRODUCT, '[^,]+', 1, level) is not null);
    

    いいね 演算子は上記のクエリで失敗します。 INを使用する必要があります 、内部的に複数のまたはとして評価されます 。

    Table1.PRODUCT IN ( select regexp_substr(I_PRODUCT,'[^,]+', 1, level) from dual
                         connect by regexp_substr(I_PRODUCT, '[^,]+', 1, level) is not null);
    

    また、 さまざまなINリスト 、私の答えを見てくださいここ

    更新

    OPのコメントに基づく。

    クエリを次のように変更します:

    WITH str_search AS
    (
         select regexp_substr(I_PRODUCT,'[^,]+', 1, level) pattern from dual
         connect by regexp_substr(I_PRODUCT, '[^,]+', 1, level) is not null
    )
    SELECT   *
    FROM     Table1
    WHERE     EXISTS (
              SELECT     NULL
              FROM     str_search
              WHERE     tab.col     LIKE pattern
                     );
    


    1. PostgreSQLのバージョンを確認する方法

    2. PostgresはPATHタイプをARRAYに変換します

    3. 行を反復処理し、カスタム距離関数を使用して最も近い一致を見つけるPostgreSQL

    4. IOエラー:ソケットの読み取りがタイムアウトしました。理由は何ですか?