SQL IFNULL с условием и записью CSV

У меня есть таблица с нулевыми значениями и типы данных для всех столбцов являются целыми / действительными. Я хотел бы написать "нет данных", если поле является нулевым при записи данных в CSV.

Вот таблица испытаний.

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

Я хотел бы отображать "строку" только в столбце test1, где идентификатор равен 2. Мой оператор 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

Спасибо.

2 ответа

Решение

Это также может быть сделано с помощью оператора CASE, который может быть чище и быстрее, если есть большие объемы данных.

SELECT id, 
       CASE WHEN test1 IS NULL AND id = 2 THEN 'string' ELSE test1 END,
       test2, 
       test3
  from testTable;

Вы можете использовать коррелированный подзапрос и извлекать 'string' только когда 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;
Другие вопросы по тегам