DB2 CASE语句和CONCAT

时间:2017-03-31 21:33:26

标签: db2

我在使用select语句返回正确的信息时遇到了麻烦

表:

prefix | suffix | alternate
------ | ------ | --------
A      | 12345  | 0
B      | 67890  | 0
C      | 0      | 555555

这是我的查询

SELECT 
        CASE WHEN prefix = 'C' THEN alternate
        ELSE CONCAT(prefix, suffix) END as Result
FROM table

我希望看到结果:

Result
------
A12345
B67890
555555

我实际看到的内容:

555555

如果我使用此选择取出CONCAT

SELECT 
        CASE WHEN prefix = 'C' THEN alternate
        ELSE suffix END as Result
FROM table

我得到了我想要的行数,但没有得到正确的列值。我在前两行中缺少前缀。

结果

12345
67890
555555

关于如何在不使用union重复代码的情况下执行此操作的想法?

Select concat(prefix,suffix) as result from table
union
select alternate as result from table

1 个答案:

答案 0 :(得分:2)

你可以做这样的事情

SELECT 
    CASE WHEN prefix <> 'C' 
         THEN prefix||suffix 
         ELSE cast (alternate as char(20)) 
    END as Result
FROM table