Sql server 不带大小写地处理空值
您好,我有一个名为Sql server 不带大小写地处理空值,sql-server,Sql Server,您好,我有一个名为Details的表,其中包含列Day1,数据类型为Int。 现在,如果列Day1包含任何数字,那么我想显示100,否则如果它包含null,我只想显示null。 除了写下面的案例陈述,还有更简单的方法吗 Case when Day1=10 /*(Apart from 0 it can have any value including null)*/ then 100 else Day1 我有大约31个专栏,我不想为每个专栏写案例。有更好的方法吗?当然没有,如果您正在考虑使用IS
Details
的表,其中包含列Day1
,数据类型为Int
。
现在,如果列Day1
包含任何数字,那么我想显示100
,否则如果它包含null,我只想显示null。
除了写下面的案例陈述,还有更简单的方法吗
Case when Day1=10 /*(Apart from 0 it can have any value including null)*/ then 100 else Day1
我有大约31个专栏,我不想为每个专栏写案例。有更好的方法吗?当然没有,如果您正在考虑使用
ISNULL()
或COALESCE()
函数,但您可以将大小写
表达式修改为如下所示
Case when Day1 > 0 or Day1 IS NULL then 100 else Day1
您好,您可以在CASE语句中检查NULL:
SELECT CASE WHEN Day1 IS NULL THEN Day1 ELSE 100 END AS Day1 FROM Details
好吧,我不知道你写这样一个问题的意图是什么,但无论如何,这个案子可以做到
CASE WHEN Day1 IS NULL THEN NULL ELSE 100 END
既然你说你想检查它是否是一个数字,
ISNUMERIC
:
CASE WHEN ISNUMERIC(Day1) = 1 THEN 100 ELSE NULL END
,但我认为这只是写作
CASE WHEN Day1 IS NULL THEN NULL ELSE 100 END
或
如果您使用的是SQL Server 2012或更高版本,则更直观(请参见本例中如何不需要
案例?:-):
IIF(Day1 IS NULL, NULL, 100)
或者,您可以使用用户定义的函数来更简洁地执行相同的操作(适用于所有版本的SQL Server):
用法:
SELECT MyFunc(Day1), MyFunc(Day2)
CREATE FUNCTION dbo.MyFunc(@Day int)
RETURNS int
RETURN (CASE WHEN @Day IS NOT NULL THEN 100 ELSE NULL END)
SELECT MyFunc(Day1), MyFunc(Day2)