簡體   English   中英

如何使用REPLACE()替換mysql SELECT查詢中的1列中的多個值?

[英]How to replace multiple values in 1 column in mysql SELECT query using REPLACE()?

我有一個表格,其中包含布爾值(僅限0和1),需要對客戶端進行CSV格式化。 我知道我可以做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'字符串替換創建了一個額外的列(所以最終結果有4列,email,name,icon_clicked-> yes,icon_clicked-> no)

一種方法是嵌套REPLACE

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

或使用CASE WHEN (這與大多數RDBMS相比,與MySQL相關的IF函數相比):

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

SqlFiddleDemo

編輯:

使用ELT還有一個很好的方法:

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

SqlFiddleDemo2

無需使用嵌套的ReplaceCase語句。 嘗試使用IF ,這更簡單

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM