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

パラメータに複数の値がある場合にWHEREステートメントでCASEを使用する

    @ServiceActivityの場合 1,2,3のようなものです

    あなたはこのようなことをすることができます

    WHERE  `,1,2,3,` LIKE `%,1,%` 
    

    したがって、変数をフォーマットします

    WHERE  ',' + @ServiceActivity + ',' LIKE '%,' + ID + ',%'
    

    SQLフィドルデモ

    SELECT *
    FROM 
        (SELECT '1,2,3,4' as X UNION ALL
         SELECT '2,3,4,5' as X UNION ALL
         SELECT '3,4,5,6' as X UNION ALL
         SELECT '1,3,4,5' as X 
         ) as T
    WHERE ',' + X + ','  LIKE  '%,1,%'
    

    あなたの場合

    (CASE WHEN @YESNOActivity = 'Yes' 
               THEN ',' + @ServiceActivity + ','
               ELSE NULL 
     END)
    LIKE
    (CASE WHEN @YESNOActivity = 'Yes' 
               THEN '%,' + TblActivity.ActivityServActId + ',%'
               ELSE 0 
     END) 
    


    1. RegExpを介してOracleの文字列から単純なHTMLタグを削除します。説明が必要です

    2. 1つの列に複数の値を返す方法(T-SQL)?

    3. MySQLクエリのタイムアウト:(70100):クエリの実行が中断されました

    4. 他のオブジェクトがそれに依存しているため、テーブルユーザーを削除できません