SQL 带条件的 IFNULL 并写入 CSV
SQL IFNULL with condition and write CSV
我有一个 table,所有列的值和数据类型都是空值 integer/real。
如果在将数据写入 csv 时该字段为空,我想写 'no data'。
这是测试表。
id test1 test2 test3
------ ------ ------ ------
1 1 2 3
2 5 6
3 7 9
4 11 12
我只想在 ID 为 2 的列 test1 中显示 'string'。
我的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 添加条件子句,或者有另一种方法来生成这个最终结果 table?
我想要的最终测试表。
id test1 test2 test3
------ ------ ------ ------
1 1 2 3
2 string 5 6
3 7 9
4 11 12
谢谢。
您可以使用相关子查询,并且仅在 id 为 2:
时才拉入 'string'
SELECT id, ifnull(test1,
(select 'string' from testTable tt
where tt.id =2 and testTable.id = tt.id)) as test1,
test2, test3
from testTable;
也可以使用 CASE 语句来完成,如果有大量数据,这可能会更干净、更快。
SELECT id,
CASE WHEN test1 IS NULL AND id = 2 THEN 'string' ELSE test1 END,
test2,
test3
from testTable;
我有一个 table,所有列的值和数据类型都是空值 integer/real。 如果在将数据写入 csv 时该字段为空,我想写 'no data'。
这是测试表。
id test1 test2 test3
------ ------ ------ ------
1 1 2 3
2 5 6
3 7 9
4 11 12
我只想在 ID 为 2 的列 test1 中显示 'string'。 我的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 添加条件子句,或者有另一种方法来生成这个最终结果 table?
我想要的最终测试表。
id test1 test2 test3
------ ------ ------ ------
1 1 2 3
2 string 5 6
3 7 9
4 11 12
谢谢。
您可以使用相关子查询,并且仅在 id 为 2:
时才拉入 'string'SELECT id, ifnull(test1,
(select 'string' from testTable tt
where tt.id =2 and testTable.id = tt.id)) as test1,
test2, test3
from testTable;
也可以使用 CASE 语句来完成,如果有大量数据,这可能会更干净、更快。
SELECT id,
CASE WHEN test1 IS NULL AND id = 2 THEN 'string' ELSE test1 END,
test2,
test3
from testTable;