【Transact-SQL】IN句でパラメータを使用して検索する

この記事は約3分で読めます。

応用コードシリーズになります。

今回はSQL構文の「IN句」を便利に使う方法です。

前提.

※今回使用する「STRING_SPLIT」はSQL Server 2016から使用可能となる関数のため、それ以前のバージョンではこの記事で紹介するやり方では実装できませんので、ご了承ください。

やり方.

IN(@PARAMETER)と使用すると、@PARAMETERがカンマ区切りでも正常に絞り込むことができません。

そのため、STRING_SPLIT関数を用いて、カンマ区切りの文字列をテーブル化する必要があります。

1,3,6 ⇒

SELECT
    [カラム名1]
    ,[カラム名2]
    ,[カラム名3]
    …

FROM
    [テーブル名]

WHERE
    [カラム名1] IN
        (
            SELECT
                value
            FROM
                string_split(@PARAMETER, [区切り文字列])
        )

コード例.

@PARAMETERはカンマ区切りで指定します。

string_split(@PARAMETER, ‘,’)をstring_split(@PARAMETER, ‘%’)に変更する等
好きな区切り文字列へ変更が可能です。

SELECT
    ID
    ,NAME

FROM
    EMPLOYEE

WHERE
    ID IN
    (
        SELECT
            value
        FROM
            string_split(@PARAMETER, ‘,’)
    )