Sql server SQL Server-案例中的案例检查是否为NULL
我仍在学习SQL,所以这似乎是一个非常奇怪的问题,但这是在用例中使用用例检查NULL的最佳方法吗Sql server SQL Server-案例中的案例检查是否为NULL,sql-server,null,case,user-defined-functions,Sql Server,Null,Case,User Defined Functions,我仍在学习SQL,所以这似乎是一个非常奇怪的问题,但这是在用例中使用用例检查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
@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
如果@FN_InputDt为null,那么@MonthNo也将为null,因此您可以跳过检查@FN_InputDt是否为null 您也可以跳过另一种情况,只需使用@MonthNo作为索引来选取字符串的一部分:
set @Result = substring(
'JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC',
@MonthNo * 3 - 2,
3
)
如果@MonthNo为null,则@Result也将为null。Set@Result=Left(DateName(m,@FN\u InputDt),3)
这会将月份转换为名称,只显示前3个字符。-1,请参阅Jeff的评论,有一个库函数可以获取月份name@Hogan:是的,这个选项非常值得一提,但它给出的结果与问题中的函数不完全相同。很高兴知道,这有什么不同吗?DatePart不是DateName吗?@Hogan-DatePart将返回月份的数值,而不是月份的实际名称。12而不是例如“Dec”。