Как заменить несколько значений в 1 столбце в mysql SELECT query с помощью REPLACE()?

у меня есть таблица с логическими значениями (только 0 и 1), которая должна быть CSV-ed для клиента. Я знаю, что могу сделать 1 заменить так:

SELECT REPLACE(email, '%40', '@'),
       REPLACE(name,'%20', ' '),
       REPLACE(icon_clicked, 1, 'Yes') 
FROM myTable 
WHERE id > 1000;

это преобразует все значения 1 В "Да", но как это сделать в одном запросе для 1 => да и 0 => нет, поэтому логический результат сохраняется в одном столбце? Я попытался сделать это:

SELECT REPLACE(email, '%40', '@'),
       REPLACE(name,'%20', ' '),
       REPLACE(icon_clicked, 1, 'Yes'),
       REPLACE(icon_clicked, 0, 'No')
FROM myTable
WHERE id > 1000;

но этот запрос создал дополнительный столбец для строки " No " replace (поэтому конечный результат имел 4 столбца, электронную почту, имя, icon_clicked - > да, icon_clicked - >нет)

2 ответов


один из способов-гнездо REPLACE:

SELECT REPLACE(REPLACE(icon_clicked, 0, 'No'), 1, 'Yes')), ...
FROM myTable
...

или использовать CASE WHEN (это будет работать для большинства РСУБД по сравнению с IF функция, которая связана с MySQL):

SELECT CASE WHEN icon_clicked THEN 'Yes' ELSE 'No' END, ...
FROM myTable
...

SqlFiddleDemo

EDIT:

есть еще один хороший способ использования ELT:

SELECT icon_clicked,
       ELT(FIELD(icon_clicked,0,1),'No','Yes'),
       ELT(icon_clicked + 1, 'No', 'Yes')
FROM mytable

SqlFiddleDemo2


нет необходимости использовать вложенные Replace или Case заявление. Попробуйте использовать если, что намного проще

SELECT 
   icon_clicked,
   IF(icon_clicked,'Yes','No')
FROM myTable