2016-11-15 3 views
-1

Я пытаюсь сравнить, если моя переменная datetime равна NULL, но она не работает, я новый, делающий сравнение в SQL, так может кто-то сказал мне, как хороший способ. Это мой код:Как узнать, является ли мое переменное datime равным нулю?

declare @FechaInicial datetime 
set @FechaInicial = (select FecharIncialDescarga 
        from Contenedores where [email protected]) 

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

Попробуйте, если @FechaInicial NULL –

+2

Возможный дубликат [SQL null и = null] (http://stackoverflow.com/questions/9581745/sql-is-null-and-null) – Blorgbeard

+0

Итак, вы говорите, что вы googled для этого, но вы ничего не могли найти об этом, поэтому лучше всего было спросить здесь? – Andrew

ответ

1

Вы можете попробовать это с помощью if(@FechaInicial IS NULL), как показано ниже.

declare @FechaInicial datetime 
set @FechaInicial = (select FecharIncialDescarga from Contenedores 
        where [email protected]) 

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

Если вы хотите проверить NULL, а также empty, вы можете попробовать if(ISNULL(@FechaInicial, '') = ''), как показано ниже.

declare @FechaInicial datetime 
set @FechaInicial = (select FecharIncialDescarga 
        from Contenedores where [email protected]) 

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

Также recommendation вместо SET используемый выше, вы можете реорганизовывать его, как показано ниже с SELECT

SELECT @FechaInicial = FecharIncialDescarga 
FROM Contenedores WHERE Id_Contenedor = @IdContenedor 
3

Прямой ответ на ваш вопрос is null:

if (@FechaInicial IS NULL) 

Это связано с тем, что почти любое сравнение с NULL возвращает NULL, а NULL - t как ложный.

Однако я хочу отметить, что вы могли бы действительно намерены эту логику:

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

Хотя нет ничего плохого с присвоения значения переменной и проверки NULL, это яснее и может быть более эффективный.

Смежные вопросы