SQL查询:满足Col1条件时Col3返回原值否则为NULL的实现
解决方案
使用标准SQL原生的CASE WHEN条件表达式即可实现,该语法是行级运算,无额外关联开销,适配大数据量表查询场景。
通用写法(对应基础查询示例)
SELECT Col1, Col2, CASE WHEN /* 此处填写Col1的判断条件,例如Col1 > 2、CHARINDEX('x', Col1) > 0 */ THEN Col3 ELSE NULL END AS Col3 FROM [Table]
如果使用的数据库支持IIF函数(如SQL Server、MySQL 8.0+、PostgreSQL 12+等),也可以用更简洁的写法,效果完全一致:
SELECT Col1, Col2, IIF(/* 此处填写Col1的判断条件 */, Col3, NULL) AS Col3 FROM [Table]
实际场景写法(对应Employees表需求)
SELECT EmployeeID, Firstname, CASE WHEN EmployeeID IN (3, 6) THEN LastName ELSE NULL END AS LastName FROM Employees
约束匹配验证
- 可直接修改原有基础查询,无需额外调整依赖逻辑
- 不需要提前知晓Col3/LastName的原有值,仅做条件透传
- 完全保留所有行的其他列原值,无行过滤逻辑
- 仅做单行字段运算,无额外IO开销,适配大数据量表场景
内容的提问来源于stack exchange,提问作者Hot coffee
相关产品推荐
相关产品推荐

