如何知道我的变量日期时间是否为空?

时间:2016-11-15 00:46:44

标签: sql sql-server

我正在尝试比较我的变量日期时间是否为NULL,但它不起作用,我是新的在SQL中进行比较,所以有人会说我的好方法。这是我的代码:

declare @FechaInicial datetime 
set @FechaInicial = (select FecharIncialDescarga 
                     from Contenedores where Id_Contenedor=@IdContenedor)

if(@FechaInicial = NULL) ---
    begin
    end

2 个答案:

答案 0 :(得分:3)

您问题的直接答案是is null

if (@FechaInicial IS NULL)

这是因为几乎所有与NULL的比较都会返回NULL,而NULL会被视为错误。

但是,我想指出你可能真的想要这个逻辑:

if (not exists (select 1 from Contenedores where Id_Contenedor = @IdContenedor))
begin 
    . . .
end;

虽然将值赋给变量并检查NULL没有任何问题,但这更清楚,效率更高。

答案 1 :(得分:1)

您可以使用if(@FechaInicial IS NULL)尝试此操作,如下所示。

declare @FechaInicial datetime 
set @FechaInicial = (select FecharIncialDescarga from Contenedores 
                     where Id_Contenedor=@IdContenedor)

if(@FechaInicial IS NULL) ---
    begin
    end

如果您想查看NULLempty,可以尝试if(ISNULL(@FechaInicial, '') = ''),如下所示。

declare @FechaInicial datetime 
set @FechaInicial = (select FecharIncialDescarga 
                     from Contenedores where Id_Contenedor=@IdContenedor)

if(ISNULL(@FechaInicial, '') = '') ---
    begin
    end

同样是recommendation,而不是上面使用的SET,您可以使用SELECT

重构它,如下所示
SELECT @FechaInicial = FecharIncialDescarga 
FROM Contenedores WHERE Id_Contenedor = @IdContenedor