sql - 如果field为null,则拉取某些字段;否则,拉取其他字段

标签 sql sql-server oracle

我有下表:

TestTable  
  ColumnA  
  Column1  
  Column2  
  Column3  
  Column4 

我想编写一个简单的 SQL 语句来检查 ColumnA 并根据它是否为空返回某些列。

类似于(伪):

If ColumnA Is Null
  SELECT ColumnA, Column1, Column2 
  FROM TestTable
Else
  SELECT ColumnA, Column3, Column4
  FROM TestTable

有什么想法吗?

最佳答案

使用 SQL CASE 表达式:

SELECT
    ColumnA,
    CASE WHEN ColumnA IS NULL THEN Column1 ELSE Column3 END AS ColumnB,
    CASE WHEN ColumnA IS NULL THEN Column2 ELSE Column4 END AS ColumnC
FROM
    TestTable

参见:
CASE (SQL-Server Transact-SQL)
CASE Expressions (Oracle)

关于sql - 如果field为null,则拉取某些字段;否则,拉取其他字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214554/

相关文章:

sql-server - NodeJS 使用node-mssql 连接到sql server 不起作用

sql-server - TSQL在存储过程中动态添加列

sql - 在 Oracle 中使用 to_date 的查询在 Windows 和 Ubuntu IDE 中运行不同

sql - 计数连接表

java - Spring 中的 SimpleJdbcTemplate 对 SQL 注入(inject)安全吗?

mysql - 在表的所有行中查找具有空值的列

sql-server - SSIS:同时移动数据期间的事务

java - 如何插入空值 Oracle 类型

sql - PLSQL 从字符串末尾开始显示数字

mysql - 表引用的顺序在 MySQL 中重要吗?