如何在SELECT查询中将两个布尔列组合成一个varchar列?

时间:2013-07-30 10:49:19

标签: mysql

所以我有一个包含两个名为“master”和“edition”的布尔列的表。我没有制作这张桌子,有人制作了这张桌子,桌子上已经装满了很多数据,我无法改变它,所以这就是我必须要做的事情。

现在需要: 我需要做一个SELECT语句,我将master和edition列组合成一个新列。新列应包含字母'm'(当master为1时),'e'(当版本为1时)或'u'(当两者都为0时)。现在我不知道该怎么做。有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

select 
CASE
    WHEN master = 0 and edition = 0 THEN 'u'
    WHEN master = 1 and edition = 0 THEN 'm'
    WHEN master = 0 and edition = 1 THEN 'e'
    ELSE '???' -- when either are one???
END 
from myTable

答案 1 :(得分:0)

有多种方法可以做到这一点。使用CASE是最简单的,还有另一个: 如果没有master=1edition=1的行,则可以使用:

select *, 'm' from table where master=1
union
select *, 'e' from table where edition=1
union
select *, 'u' from table where edition=0 and master=0

答案 2 :(得分:0)

如果您需要更新新列的值,可以使用此查询:

UPDATE
  tablename
SET
  new = CASE WHEN NOT (master OR edition) THEN 'u'
             ELSE
               CONCAT_WS('',
                 CASE WHEN master THEN 'm' END,
                 CASE WHEN edition THEN 'e' END)
        END

请参阅小提琴here

如果两个值均为false,则返回u;如果master为true,则返回m;如果版本为true,则返回e;如果两者都为真,则返回me