[SQL Server] in句に可変値を渡す

検索条件が可変のときはin句を使用しますが、データセットとかのパラメータではin句へ値を渡すことができません。(1つしか)
そこで1つの文字列を渡すことで解決しました。

select xxCD, xxNM
  from xxTable
 where
    (
       --検索文字列の入力が無い時は常にtrueとする
         (@検索文字列 = ”)
       or
       --検索文字列が入力されたときに文字列比較する
         (@検索文字列 <> ”
          and
            --"0000"パディングすること
            charindex(right(‘0000′ + convert(varchar,xxCD),4),@検索文字列) > 0
         )
    )

肝は、検索条件を0000の4桁としている事ですね。
当初 検索対象が数値なので、検索文字列に 1,2,5 と渡していたのですが、100 とか20とか正しくないものまで返ってきたので渡す方も、比較される方も4桁としました。

charindexでその文字が含まれるかを調べますが、ここを変更することでORACLEとか他のデータベースでも使えると思います。
@検索文字列には、’0001′,’0002′,’0005′ などを渡します。