Mysql Query没有将真值作为连接字符串返回

时间:2014-05-15 10:25:49

标签: mysql

我想只获取真值列及其值为字符串...

id | a | b | c | d | e
------------------------
5  | 1 | 0 | 1 | 1 | 0

我试过了,

select CONCAT( 'a:', a, ',b:', b, ',c:', c, ',d:', d, ',e:',e  ) where id=5

在查询之上运行时,结果为 a:1,b:0,c:1,d:1,e:0

但是不会导致格式低于......

a:1,b:1,d:1

只是为了得到真正的价值......任何人都可以请...

2 个答案:

答案 0 :(得分:1)

您需要在CONCAT()中使用多个案例,如:

CONCAT (case when a <> '0' then CONCAT ('a:', a) else '' end case, ...)

这应该对你有帮助。

答案 1 :(得分:1)

CONCAT和CONCAT_WS的混合。

select CONCAT_WS( ',', 
                    IF(a = 0, NULL, CONCAT('a:', a)), 
                    IF(b = 0, NULL, CONCAT('b:', b)), 
                    IF(c = 0, NULL, CONCAT('c:', c)), 
                    IF(d = 0, NULL, CONCAT('d:', d)), 
                    IF(e = 0, NULL, CONCAT('e:', e)) ) where id=5

CONCAT_WS将跳过空值。因此,当值为false / 0时,它使用null来强制跳过该值。