1

我有一个包含空值的表,所有列的数据类型都是整数/实数。如果在将数据写入 csv 时字段为空,我想写“无数据”。

这是测试表。

id     test1  test2  test3
------ ------ ------ ------
1      1      2      3
2             5      6
3      7             9
4             11     12

我只想在 id 为 2 的列 test1 中显示“字符串”。我的 sql 语句是

SELECT id, (ifnull(test1, 'string')) as test1, test2, test3 from testTable;

它产生了这个。

id     test1  test2  test3
------ ------ ------ ------
1      1      2      3
2      string 5      6
3      7             9
4      string 11     12

有没有办法为 ifnull 放置条件子句,或者有另一种方法来生成这个最终表?

我想要的最终测试表。

id     test1  test2  test3
------ ------ ------ ------
1      1      2      3
2      string 5      6
3      7             9
4             11     12

谢谢你。

4

2 回答 2

1

也可以使用 CASE 语句来完成,如果有大量数据,这可能会更干净、更快。

SELECT id, 
       CASE WHEN test1 IS NULL AND id = 2 THEN 'string' ELSE test1 END,
       test2, 
       test3
  from testTable;
于 2016-07-22T16:18:43.830 回答
1

您可以使用相关子查询,并且仅在 id 为 2 时拉入“字符串”:

SELECT id, ifnull(test1, 
                  (select 'string' from testTable tt 
                    where tt.id =2 and testTable.id = tt.id)) as test1, 
       test2, test3
 from testTable;
于 2016-07-22T16:08:24.233 回答