当前位置:  开发笔记 > 后端 > 正文

如何使用REPLACE()替换mysql SELECT查询中的1列中的多个值?

如何解决《如何使用REPLACE()替换mysqlSELECT查询中的1列中的多个值?》经验,为你挑选了1个好方法。

我有一个表格,其中包含布尔值(仅限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)



1> Lukasz Szozd..:

一种方法是嵌套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:

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

SqlFiddleDemo2

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有