Ответ 1
Вам нужна функция ISNULL.
SELECT ISNULL(a, b)
b
выбирается, если a
равно нулю.
Кроме того, вы можете использовать вариант выбора WHEN/THEN, поиск в BOL. По существу: блок c switch/case соответствует SQL.
Мне нужно выбрать поле, называемое ProgramID, из таблицы, и если идентификатор ProgramID равен NULL, тогда мне нужно выбрать значение в InterimProgramID из той же таблицы и указать его как ProgramID.
Как я могу сделать условный оператор SELECT для этого?
Вам нужна функция ISNULL.
SELECT ISNULL(a, b)
b
выбирается, если a
равно нулю.
Кроме того, вы можете использовать вариант выбора WHEN/THEN, поиск в BOL. По существу: блок c switch/case соответствует SQL.
Вы можете использовать функцию ISNULL или функцию COALESCE. Они оба делают почти то же самое, однако ISNULL
принимает только два параметра, а COALESCE
принимает несколько параметров (возвращает первый непустой, который он встречает). Оба проверяют первый параметр, затем второй (и COALESCE продолжается)
DECLARE @IAMNULL VARCHAR
DECLARE @IAMNOTNULL VARCHAR
SET @IAMNOTNULL = 'NOT NULL'
SELECT ISNULL(@IAMNULL, @IAMNOTNULL)
--Output: 'NOT NULL'
DECLARE @IAMNULLALSO VARCHAR
SELECT COALESCE(@IAMNULL, @IAMNULLALSO, @IAMNOTNULL)
--Output: 'NOT NULL'
select COALESCE ( ProgramID , InterimProgramID ) as 'ProgramID'
SELECT ProgramID
FROM a_table
WHERE ProgramID IS NOT NULL
UNION
SELECT InterimProgramID AS ProgramID
FROM a_table
WHERE ProgramID IS NULL;
Вы также можете использовать функцию IFNULL
select IFNULL(ProgramId,interimId) as ProgramId
Coalesce ('zzz-' + ProgramID, InterimID), поскольку programID по-прежнему игнорирует ProgramID, даже если у вас есть значение предлога. Это классная небольшая функция