Je dois sélectionner un champ appelé ProgramID dans une table et si le ProgramID est NULL, je dois ensuite sélectionner la valeur dans InterimProgramID de la même table et l'aliaser en tant que ProgramID.
Comment puis-je créer une instruction SELECT conditionnelle?
Vous avez besoin de l'opérateur ISNULL/function.
Select ISNULL(a, b)
b
est sélectionné si a
est null.
En outre, vous pouvez utiliser l'option de sélection WHEN/THEN, dans BOL. Essentiellement: son bloc c switch/case répond à SQL.
Vous pouvez utiliser la fonction ISNULL ou la fonction COALESCE . Les deux font à peu près la même chose, cependant ISNULL
ne prend que deux paramètres et COALESCE
prend plusieurs paramètres (en retournant le premier non-null qu’il rencontre). Les deux essaient le premier paramètre, puis le second (et COALESCE continue)
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;
Coalesce ('zzz-' + ProgramID, InterimID) car programID ignorera toujours ProgramID même si vous avez une valeur prétexte. C'est une petite fonction cool
Vous pouvez également utiliser la fonction IFNULL
select IFNULL(ProgramId,interimId) as ProgramId