我想只获取真值列及其值为字符串...
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
只是为了得到真正的价值......任何人都可以请...
答案 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来强制跳过该值。