检查存储过程中参数是空还是空

use*_*502 40 sql parameters null stored-procedures sql-server-2008

我知道如何检查一个参数是否为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..
Run Code Online (Sandbox Code Playgroud)

我很感激你的帮助.

Rex*_*ler 69

我有时会像这样使用NULLIF ......

IF NULLIF(@PreviousStartDate, '') IS NULL
Run Code Online (Sandbox Code Playgroud)

可能没有理由比@Oded和@bluefeet建议的方式更好,只是风格偏好.

@ danihp的方法真的很酷,但是当我想的是空的或空的时候,我疲惫的老脑子不会去COALESCE :-)

  • 嗨雷克斯,因为我已经阅读了你的答案,我转到了你的符号. (3认同)

Ode*_*ded 33

这是一般模式:

IF(@PreviousStartDate IS NULL OR @PreviousStartDate = '')
Run Code Online (Sandbox Code Playgroud)

'' 是SQL Server中的空字符串.


dan*_*era 11

我用coalesce:

IF ( COALESCE( @PreviousStartDate, '' ) = '' ) ...
Run Code Online (Sandbox Code Playgroud)


Tar*_*ryn 6

您可以使用:

IF(@PreviousStartDate IS NULL OR @PreviousStartDate = '')
Run Code Online (Sandbox Code Playgroud)