DB2 CASE WHEN THEN 向所有值添加两个额外的空值

DB2 CASE WHEN THEN adding two extra nulls to all values

我今天收到一个初级程序员发给我的奇怪问题。

在 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

在哪里。代表空

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

什么 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