SQL Server заменяет ноль пустой строкой

sql-server

448 просмотра

2 ответа

Мне нужно знать, какой оператор SQL я использую для вывода, где, если ячейка содержит ноль, она извлекает информацию из столбца рядом с ней.

Чтобы объяснить лучше: у меня есть три таблицы, таблица 1 содержит 7 столбцов, таблица 2 содержит 6 столбцов, таблица 3 содержит 4 столбца.

Мне нужно выбрать 1 столбец из таблицы 1, за которым следует тире, затем выбрать 3 столбца из другой таблицы, за которыми следует тире, а затем еще один столбец из другой таблицы, но там, где когда-либо столбец содержит ноль, значения должны быть заменены тире '- ».

Это код, который я до сих пор:

SELECT 
    Episode_Name, '-', Pnr_FName, Pnr_LName, Guest, '-', Car_Make
FROM 
    EPISODES, PRESENTERS, CARS

Я попробовал:

(CASE WHEN Guest = null THEN ''
END EPISODE)

и я связал это в selectзаявлении, но это не сработало.

Любая помощь будет оценена! Спасибо

Автор: Lady_A Источник Размещён: 08.11.2019 11:04

Ответы (2)


1 плюс

Решение

Вы не можете проверить значение столбца для NULLиспользования =оператора, потому что результат также будет NULL. Вместо этого вы должны использовать IS NULLи IS NOT NULL. Но для удобства чтения я бы использовал COALESCEвместо CASEутверждений.

Используйте COALESCE:

SELECT CONCAT(COALESCE(Episode_Name, ' '),
              '-',
              COALESCE(Pnr_FName, ' '),
              COALESCE(Pnr_LName, ' '),
              COALESCE(Guest, ' '),
              '-',
              COALESCE(Car_Make, ' '))
FROM EPISODES, PRESENTERS, CARS

Кстати, вы должны использовать явный синтаксис объединения вместо использования запятых в FROMпредложении, например

FROM EPISODES e INNER JOIN PRESENTERS p
    ON e.col = p.col
Автор: Tim Biegeleisen Размещён: 20.08.2016 08:46

0 плюса

Я попробовал: (СЛУЧАЙ, КОГДА Гость = НУЛЬ, ТО, КОНЕЦ ЭПИЗОДА)

пытаться

case when guest is null then '' end 

Вы не можете сравнивать нули, чтобы проверить, есть ли нули, вы должны использовать IS NULL..

Автор: TheGameiswar Размещён: 20.08.2016 08:44
Вопросы из категории :
32x32