SQL Server – CASE dans une search CASE pour NULL

Je suis encore en train d'apprendre le SQL, cela peut sembler une question très étrange, mais est-ce la meilleure façon d'utiliser CASE dans un CAS pour vérifier NULL?

@FN_InputDt datetime) RETURNS varchar(3) as BEGIN DECLARE @Result varchar(3), @MonthNo int Set @MonthNo = datepart(m,@FN_InputDt) Set @Result = CASE WHEN @FN_InputDt IS NOT NULL then CASE @MonthNo WHEN 1 then 'JAN' WHEN 2 then 'FEB' WHEN 3 then 'MAR' WHEN 4 then 'APR' WHEN 5 then 'MAY' WHEN 6 then 'JUN' WHEN 7 then 'JUL' WHEN 8 then 'AUG' WHEN 9 then 'SEP' WHEN 10 then 'OCT' WHEN 11 then 'NOV' WHEN 12 then 'DEC' END END RETURN @Result END 

Si @FN_InputDt est nul alors @MonthNo sera aussi nul, donc vous pouvez simplement ignorer si @FN_InputDt est nul.

Vous pouvez ignorer l'autre cas en utilisant simplement @MonthNo en tant qu'index pour sélectionner une partie d'une string:

 set @Result = subssortingng( 'JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC', @MonthNo * 3 - 2, 3 ) 

Si @MonthNo est null @Result sera également null.

Définissez @Result = Left (DateName (m, @ FN_InputDt), 3)

Ceci convertit le mois au nom et affiche seulement les 3 premiers caractères.