は、ストアドプロシージャのステートメントを作成しますSQLクエリにIF-THEN-ELSEロジックを使用してオプションのパラメータを含めるにはどうすればよいですか?ここ
Create Procedure SearchCreatedAssignments
(@LessonName Varchar(50), @DateFrom date, @DateTo Date, @LocationCode Varchar(10))
As
BEGIN
基本的に、私は、パラメータの値に基づいてデータベースを検索し、クエリを書きたいです。たとえば、
Select *
from dbo.test
where (LessonName = @LessonName)
AND (StartDate = @DateFrom)
AND (EndDate = @DateTo)
AND (LocationCode = @LocationCode)
かなり簡単ですか?ただし、これらのパラメータのいずれかがNULL(空の文字列を含む)の場合、検索から除外し、nullでないパラメータのみで検索したいと思います。私はこのようなことを考えていた:
--if @LocationCode is null OR @LocationCode = '' -> omit @LocationCode from the search
これは明らかに擬似コードです。これどうやってするの?これが単純な仕事であれば私を許してください。私はSQLに新しいです。
したがって、パラメータがnull(または空の文字列を含む)の場合、基本的に検索から除外されますか? – ic3man7019
@ ic3man7019いいえ、フィールドを自分と比較して評価します。ほとんどの答えは同じです。 –
@ ic3man7019私はジャンプして、それが省略されたのと同じ結果を与えることを指摘したいと思います。私はこの練習をたくさん使っていますが、このような種類のクエリの方が良いとは思っていません。また、他の多くの答えは、動的SQLを提案している、私は可能な限り避けるだろう。動的SQLを使用する場合、[パフォーマンスとセキュリティ](http://www.sommarskog.se/dynamic_sql.html)への影響を考慮してください。 – ahoxha