如何解决如果Variable为Null,则忽略Where子句的一部分
我正在寻找一种使PowerQuery / SQL语句中的Where子句忽略NULL参数值的方法。我目前使用Text.Combine分配4个不同的变量以从excel表中提取。这很好用,但是如果4个变量中的任何一个都留为空白,则不会得到任何结果。例如,如果SKUList为Null,是否可以忽略Where子句的p.partnumber部分?
4个变量:
SKUList = Text.Combine(#"tMultiSKU"[SKU List],"','"),ItemTypeName = Text.Combine(#"tItemType"[Item Type Name],ItemStatus = Text.Combine(#"tItemStatus"[Item Status],Orderability = Text.Combine(#"tOrderability"[Orderability],'")
条款在哪里:
WHERE
p.partnumber in ('"& SKUList & "')
AND s.ItemTypeName in('" & ItemTypeName & "')
AND p.itemstatusname in('"& ItemStatus & "')
AND p.OrderabilityFlag in('"& Orderability &"')
解决方法
我知道您想在给定空值时禁用过滤谓词。
您可以使用布尔逻辑。假设您的意思是空字符串(不是null
值),则可以将where
子句的短语为:
WHERE
('" & ItemTypeName & "' = '' OR s.ItemTypeName = '" & ItemTypeName & "')
AND ('" & ItemStatus & "' = '' OR p.itemstatusname = '" & ItemStatus & "')
AND ('" & Orderability & "' = '' OR p.OrderabilityFlag = '" & Orderability & "')
请注意,我将IN
条件更改为简单的等式,因为这似乎是您想要的。
可以轻松地将其更改为处理null
值,例如:
('" & ItemTypeName & "' IS NULL OR s.ItemTypeName = '" & ItemTypeName & "')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。