如何基于另一列值在WHERE子句中添加条件
解决方案
你可以通过在WHERE子句中组合逻辑条件来实现需求,不需要单独的IF分支语句。核心思路是:要么ManagedBy字段为空/空字符串(此时返回所有记录),要么ManagedBy字段非空且非空字符串,同时ActiveFlag='Y'。
对应的SQL语句如下:
SELECT FirstName, LastName FROM Customers WHERE (ManagedBy IS NULL OR ManagedBy = '') OR (ManagedBy IS NOT NULL AND ManagedBy <> '' AND ActiveFlag = 'Y')
简化写法
上面的条件可以进一步优化,利用COALESCE函数把NULL值转换为空字符串,让判断逻辑更简洁:
SELECT FirstName, LastName FROM Customers WHERE COALESCE(ManagedBy, '') = '' OR ActiveFlag = 'Y'
逻辑说明
- 当
ManagedBy是NULL或者空字符串时,COALESCE(ManagedBy, '') = ''条件成立,WHERE整体为真,该条记录会被返回; - 当
ManagedBy非空且不是空字符串时,第一个条件不成立,此时会校验ActiveFlag='Y',只有满足该条件的记录才会被筛选出来。
内容的提问来源于stack exchange,提问作者Rich
相关产品推荐
相关产品推荐

