Я пробовал следующие запросы, чтобы проверить, является ли текущий год високосным или нет.Обработка значений NULL при установке значения переменной
Declare @leapyearstrt int = 0
--1st query
select @leapyearstrt = ISNULL(ISLEAPYEAR,0)
FROM [dbo].[TimeElement]
WHERE CurrentDate = getdate()
--2nd query
SET @leapyearstrt = (SELECT isnull(ISLEAPYEAR,0)
FROM [dbo].[TimeElement]
WHERE CurrentDate = getdate()
)
Если данные не существует в таблице для данной даты, первый запрос возвращает @leapyearstrt
в 0
, но второй запрос возвращает @leapyearstrt
как NULL
.
Почему это происходит? Как назначить значение 0
в операторе SET
, если данные не существуют в таблице?
(PS: Я использовал SET
присвоить значение, поскольку select
может вернуть более одной строки)
Нет записи нет значения – lad2025
Если значение отсутствует, параметр должен вернуть присвоенное ему значение по умолчанию. это? – bmsqldev
Возможный дубликат [SET по сравнению с SELECT при назначении переменных?] (Http://stackoverflow.com/questions/3945361/set-versus-select-when-assigning-variables) – lad2025