DB2 CASE,然后为所有值添加两个额外的空值

时间:2015-01-19 12:16:46

标签: sql db2 case

今天我从一名初级程序员那里收到了一个奇怪的问题。

在DB2 SQL语句中,他切换了

select [Value]

旧结果是

AAAAAA
CCCCCC
BBBBBB
DDDDDDDDDDD
EE

select 
CASE [Value] 
  WHEN 'AAAAAA'     
    THEN 'AAAA'          
  WHEN 'BBBBBB'                  
    THEN 'BBBBBBBB'          
  ELSE [Value]                
  END 

新结果是

..AAAA............
..CCCCCC
..BBBBBBBB........
..DDDDDDDDDDD
..EE

在哪里。表示空

我想了解是什么导致两个额外的空值出现在未选择的值中?

1 个答案:

答案 0 :(得分:1)

什么是DB2版本和平台?
此语句是直接在SQL客户端界面中运行的吗?或者它是在存储过程中,其结果是由某些东西解释的?

对我来说,它看起来返回的数据类型已从固定长度CHAR更改为VARCHAR,并且读取结果的任何内容仍将其处理为CHAR。

字符串文字始终被解释为VARCHAR。

如果是这种情况,请更正调用应用程序或将VARCHAR转换为CHAR。

select 
CASE [Value] 
  WHEN 'AAAAAA'     
    THEN CHAR('AAAA', 30)          
  WHEN 'BBBBBB'                  
    THEN CHAR('BBBBBBBB', 30)          
  ELSE [Value]                
END