今天我从一名初级程序员那里收到了一个奇怪的问题。
在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
在哪里。表示空
我想了解是什么导致两个额外的空值出现在未选择的值中?
答案 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