web-dev-qa-db-ja.com

ストアドプロシージャのパラメーターがnullまたは空かどうかを確認します。

パラメータがnullであるかどうかを確認する方法は知っていますが、空であるかどうかを確認する方法がわかりません...これらのパラメータがあり、前のパラメータが空またはnullであることを確認してから、以下のように設定します

ALTER PROCEDURE [dbo].[GetSummary]
    @PreviousStartDate NVARCHAR(50) ,
    @PreviousEndDate NVARCHAR(50) ,
    @CurrentStartDate NVARCHAR(50) ,
    @CurrentEndDate NVARCHAR(50)
AS
  BEGIN
    IF(@PreviousStartDate IS NULL OR EMPTY)
        SET @PreviousStartdate = '01/01/2010'  for example..

私は助けに感謝します。

39
user710502

私は時々 NULLIF を使用します...

IF NULLIF(@PreviousStartDate, '') IS NULL

@Odedや@bluefeetで提案されている方法よりも優れている理由はおそらくないでしょう。単なるスタイルの好みです。

@danihpの方法は本当にクールですが、私の疲れた古い脳はnullまたは空だと思っているときにCOALESCEに行きません:-)

68
Rex Miller

一般的なパターンは次のとおりです。

IF(@PreviousStartDate IS NULL OR @PreviousStartDate = '')

''は、SQL Serverの空の文字列です。

32
Oded

coalesce :を使用します

IF ( COALESCE( @PreviousStartDate, '' ) = '' ) ...
11
dani herrera

coalescenullifの組み合わせはどうですか?

SET @PreviousStartDate = coalesce(nullif(@PreviousStartDate, ''), '01/01/2010')
3
Pavel Hodek

別のオプション:

IF ISNULL(@PreviousStartDate, '') = '' ...

http://weblogs.sqlteam.com/mladenp/archive/2007/06/13/60231.aspx でこの式に基づいた関数を参照してください

3
Erik K.

使用できます:

IF(@PreviousStartDate IS NULL OR @PreviousStartDate = '')
2
Taryn

変数がnullまたは空かどうかを確認するには、次を使用します。

IF LEN(ISNULL(@var, '')) = 0
2

パラメータを使用する場合はオプションなので、使用します。

CREATE PROCEDURE uspGetAddress @City nvarchar(30) = NULL, @AddressLine1 nvarchar(60) = NULL
    AS
    SELECT *
    FROM AdventureWorks.Person.Address
    WHERE City = ISNULL(@City,City)
    AND AddressLine1 LIKE '%' + ISNULL(@AddressLine1 ,AddressLine1) + '%'
    GO
1
Alam Usmani

これを試すことができます:-

IF NULLIF(ISNULL(@PreviousStartDate,''),'') IS NULL
SET @PreviousStartdate = '01/01/2010'
0
TracyT

「ヌル、空、または空白」チェックが必要な場合は、このようなLTRIMおよびRTRIMを使用して、不要な文字列操作を回避できます。

IF COALESCE(PATINDEX('%[^ ]%', @parameter), 0) > 0
    RAISERROR ...
0
Jodrell

無効な日付も確認することをお勧めします。

set @PreviousStartDate=case ISDATE(@PreviousStartDate) 
    when 1 then @PreviousStartDate 
        else '1/1/2010'
    end
0
John Dewey