Как заменить несколько значений в 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
...
EDIT:
есть еще один хороший способ использования ELT
:
SELECT icon_clicked,
ELT(FIELD(icon_clicked,0,1),'No','Yes'),
ELT(icon_clicked + 1, 'No', 'Yes')
FROM mytable
нет необходимости использовать вложенные Replace
или Case
заявление. Попробуйте использовать если, что намного проще
SELECT
icon_clicked,
IF(icon_clicked,'Yes','No')
FROM myTable