私はストアド プロシージャに重きを置く SQL Server 環境で作業しており、多くのプロシージャが Null の代わりに 0 と '' を使用して、意味のあるパラメータ値が渡されなかったことを示しています。
これらのパラメーターは、WHERE 句で頻繁に使用されます。通常のパターンは次のようなものです
WHERE ISNULL(SomeField,'') =
CASE @SomeParameter
WHEN '' THEN ISNULL(SomeField,'')
ELSE @SomeParameter
END
さまざまな理由から、proc を呼び出すコードを変更するよりも、proc を変更する方がはるかに簡単です。では、呼び出し元のコードが null パラメーターに対して空の文字列を渡すことを考えると、空の文字列と比較する最も速い方法は何ですか?
私が考えたいくつかの方法:
@SomeParameter = ''
NULLIF(@SomeParameter,'') IS NULL
LEN(@SomeParameter) = 0
また、proc の早い段階でパラメーターを検査し、'' に等しい場合は NULL に設定し@SomeParameter IS NULL
、実際の WHERE 句でテストを行うことも検討しました。
他にどのような方法がありますか?そして、何が最速ですか?
どうもありがとう。