清理SQL代码

时间:2013-07-01 22:22:27

标签: sql sql-server-2012

我创建了一个有效的SQL查询,但它很难看。我正在使用声明:

CASE WHEN p.Guests is null THEN 0 ELSE p.Guests

在查询中进行的一些计算中大约有10次,我想知道是否可以执行以下操作:

variable = CASE WHEN p.Guests is null THEN 0 ELSE p.Guests

然后代替123 * (CASE WHEN p.Guests is null THEN 0 ELSE p.Guests) 我可以做123 * variable。 p.Guests是参加活动的客人数量,它根据查询中的每一行而有所不同。 所以我的问题是:有没有办法在SQL中创建这样的变量?

2 个答案:

答案 0 :(得分:3)

时,不需要冗长的案例陈述
ISNULL(p.Guests, 0)

http://msdn.microsoft.com/en-us/library/ms184325.aspx

答案 1 :(得分:3)

您可以使用ISNULL

select 123 * ISNULL(p.Guests,0) FROM ...

ISNULL函数将返回第一个参数,除非它是null,在这种情况下它将返回第二个参数。