Sql来显示where子句中的列名

  • 本文关键字:子句 显示 where Sql sql
  • 更新时间 :
  • 英文 :


我有一段相对简单的SQL代码,如下所示:

SELECT column_1, column_2, column_3 
FROM table 
WHERE column_1 IS NULL OR column_2 IS NULL OR column_3 IS NULL

显然没有什么突破性的,但我被要求了解是否有办法添加第四列,以输出触发where子句的列的名称,如果可能的话,最好是可以合并到上述SQL语句中的列。

您可以使用字符串运算和if来达到目标。您尚未指定将运行此查询的数据库类型,因此以下示例针对MySQL 8进行了测试:

SELECT column_1, column_2, column_3, TRIM(CONCAT(IF(column_1 IS NULL, ' column_1', ''), IF(column_2 IS NULL, ' column_2', ''), IF(column_3 IS NULL, ' column_3', '')))
FROM Test
WHERE column_1 IS NULL OR column_2 IS NULL OR column_3 IS NULL

也许有一种更简单的方法可以做到这一点,但这似乎可以完成任务。当然,对于大型查询来说,这是不切实际的,需要我们重构where子句的逻辑。因此,这似乎并不可取,或者仅适用于自动生成的查询。

一个更简单的方法可能是单独查询所有where条件。然后你就知道使用了哪种替代方法。

最新更新