Как перенести значение NULL в 00:00 - PullRequest
0 голосов
/ 17 октября 2019

У меня есть представление, которое получает данные из интернет-базы данных. Представление, которое я создал, работает, но когда нет данных (NULL), мне нужно вернуть 00:00. Как мне этого добиться?

Используя SSMS, я получаю время начала забронированных ресурсов. Я уже понял их правильно. Но иногда он возвращает NULL. Я искал в Интернете и уже пытался исправить это, но это не сработает.

SELECT 
    CASE WHEN COUNT(1) > 0 
            THEN SUBSTRING(CONVERT(VARCHAR, MIN(DATEADD(hour, - 1, dbo.GetEventCustomData(dbo.events.id, N'algemeneinfo_startvoorstelling'))), 108), 1, 5) 
            ELSE '00:00' 
    END AS Start, 
    CASE WHEN COUNT(1) > 0 
            THEN SUBSTRING(CONVERT(VARCHAR, MAX(dbo.GetEventCustomData(dbo.events.id, N'algemeneinfo_eindevoorstelling')), 108), 1, 5) 
            ELSE '00:00' 
    END AS Einde 
FROM
    dbo.events 
INNER JOIN 
    dbo.EventScheduleEntry ON dbo.events.id = dbo.EventScheduleEntry.eventid 
INNER JOIN 
    dbo.Locations ON dbo.events.locations = dbo.Locations.id 
INNER JOIN 
    dbo.Profiles ON dbo.events.profile = dbo.Profiles.id 
WHERE 
    (dbo.Locations.name = N'studio') 
    AND (dbo.EventScheduleEntry.starttime > CONVERT(date, GETDATE())) 
    AND (dbo.EventScheduleEntry.starttime < CONVERT(date, DATEADD(day, 1, GETDATE()))) 
    AND (dbo.events.status = N'bevestiging') 
    AND (dbo.Profiles.name <> N'buffer')        

Я ожидаю, что когда представление вернет NULL, вместо этого будет возвращено 00:00.

1 Ответ

0 голосов
/ 17 октября 2019

Как указано в комментариях, вы должны использовать функцию ISNULL, например:

SELECT  ISNULL(SUBSTRING(CONVERT(varchar, MIN(DATEADD(hour, - 1, dbo.GetEventCustomData(dbo.events.id, N'algemeneinfo_startvoorstelling'))), 108), 1, 5), '00:00')
            AS Start, 
        ISNULL(SUBSTRING(CONVERT(varchar, MAX(dbo.GetEventCustomData(dbo.events.id, N'algemeneinfo_eindevoorstelling')), 108), 1, 5), '00:00')
            AS Einde 
FROM dbo.events 
INNER JOIN dbo.EventScheduleEntry 
    ON dbo.events.id = dbo.EventScheduleEntry.eventid 
INNER JOIN dbo.Locations 
    ON dbo.events.locations = dbo.Locations.id 
INNER JOIN dbo.Profiles 
    ON dbo.events.profile = dbo.Profiles.id 
WHERE (dbo.Locations.name = N'studio') 
AND (dbo.EventScheduleEntry.starttime > CONVERT(date, GETDATE())) 
AND (dbo.EventScheduleEntry.starttime < CONVERT(date, DATEADD(day, 1, GETDATE()))) 
AND (dbo.events.status = N'bevestiging') 
AND (dbo.Profiles.name <> N'buffer')   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...