sql 中 having/where 子句中的条件?
Condition in having/where clause in sql?
所以我有一个简单的查询,它从报告(公司代码和部门代码)中获取以下参数和 returns 该公司内部和该公司的该部门内的所有项目的列表.
现在我想要 select 所有部门的选项。因此,您可以选择公司一部门所有,而不是选择公司一部门一。
所以我在我的分区代码属性中添加了一个值,实际代码为 NULL,名称为 'All'。
我的查询很长,但这是最重要的一行
Having Style.Company_Code = @CompanyCode And Style.Division_Code = @DivisionCode
因此在长查询结束时,它只是 select 包含指定公司和部门代码的所有行。
如果我把这一行改成这样(完全删除除法部分)
Having Style.Company_Code = @CompanyCode
它按预期工作,显示了指定公司所有部门的所有项目,完全忽略了部门字段。但是,很明显,这删除了选择部门的功能。
所以我把这行改成了这个。
Having Style.Company_Code = @CompanyCode And (Style.Division_Code = @DivisionCode OR @DivisionCode = NULL)
如果我 select 一个除法,它会正常工作,但如果我 select 'ALL' 的值为 NULL,它只是 returns 什么都没有。我究竟做错了什么?
问题在于 NULLS 背后的逻辑。
条件 NULL = NULL 被评估为 FALSE
在我的建议中,你问:NULL IS NULL,这是 TRUE
请尝试以下操作:
HAVING Style.Company_Code = @CompanyCode
AND (Style.Division_Code = @DivisionCode OR @DivisionCode IS NULL)
所以我有一个简单的查询,它从报告(公司代码和部门代码)中获取以下参数和 returns 该公司内部和该公司的该部门内的所有项目的列表.
现在我想要 select 所有部门的选项。因此,您可以选择公司一部门所有,而不是选择公司一部门一。
所以我在我的分区代码属性中添加了一个值,实际代码为 NULL,名称为 'All'。
我的查询很长,但这是最重要的一行
Having Style.Company_Code = @CompanyCode And Style.Division_Code = @DivisionCode
因此在长查询结束时,它只是 select 包含指定公司和部门代码的所有行。
如果我把这一行改成这样(完全删除除法部分)
Having Style.Company_Code = @CompanyCode
它按预期工作,显示了指定公司所有部门的所有项目,完全忽略了部门字段。但是,很明显,这删除了选择部门的功能。
所以我把这行改成了这个。
Having Style.Company_Code = @CompanyCode And (Style.Division_Code = @DivisionCode OR @DivisionCode = NULL)
如果我 select 一个除法,它会正常工作,但如果我 select 'ALL' 的值为 NULL,它只是 returns 什么都没有。我究竟做错了什么?
问题在于 NULLS 背后的逻辑。 条件 NULL = NULL 被评估为 FALSE 在我的建议中,你问:NULL IS NULL,这是 TRUE 请尝试以下操作:
HAVING Style.Company_Code = @CompanyCode
AND (Style.Division_Code = @DivisionCode OR @DivisionCode IS NULL)