web-dev-qa-db-fra.com

Sélectionnez une colonne si l'autre colonne est null

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?

39
Ronald McDonald

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.

68
Peter Aron Zentai

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'
15
Justin Pihony
  select COALESCE ( ProgramID , InterimProgramID ) as 'ProgramID' 
7
paparazzo
SELECT ProgramID
  FROM a_table
 WHERE ProgramID IS NOT NULL
UNION
SELECT InterimProgramID AS ProgramID
  FROM a_table
 WHERE ProgramID IS NULL;
1
onedaywhen

Coalesce ('zzz-' + ProgramID, InterimID) car programID ignorera toujours ProgramID même si vous avez une valeur prétexte. C'est une petite fonction cool

0
user220934

Vous pouvez également utiliser la fonction IFNULL

select IFNULL(ProgramId,interimId) as ProgramId
0
sathish m