2015-12-28 70 views
5

我有一個表格,其布爾值(僅限於0和1)需要CSV-ed到客戶端。我知道我可以做1替換這樣的:如何使用REPLACE()替換mysql SELECT查詢中的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; 

但這查詢創建一個附加列的「否」字符串替換(所以最後的結果有4列,電子郵件,姓名,icon_clicked->是,icon_clicked->無)

回答

6

一種方法是窩REPLACE

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

或使用CASE WHEN(這會爲大多數RDBMS比較IF函數,它是MySQL的相關工作):

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

SqlFiddleDemo

編輯:

還有利用ELT一個不錯的方式:

​​

SqlFiddleDemo2

+0

我不知道了'CASE'事情。謝謝 ! – Seblor

+0

第一個完美工作 –

2

無需使用嵌套ReplaceCase聲明。嘗試使用IF,這是遠遠傻笑

SELECT 
    icon_clicked, 
    IF(icon_clicked,'Yes','No') 
FROM myTable 
相關問題