DB2 CASE WHEN THEN 向所有值添加两个额外的空值
Posted
技术标签:
【中文标题】DB2 CASE WHEN THEN 向所有值添加两个额外的空值【英文标题】:DB2 CASE WHEN THEN adding two extra nulls to all values 【发布时间】:2015-01-19 12:16:45 【问题描述】:我今天收到一个初级程序员发来的一个奇怪问题。
在一个 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
在哪里。表示一个空
我想了解是什么导致两个额外的空值出现在非选定值中?
【问题讨论】:
空值?你说的是 one 列包含'..AAAA............',对吗?那你说的是空白吗?还是二进制零?突然间,每个检索到的值都添加了两个前导字符,加上给定文字的几个尾随字符? 我不知道 DB2 支持方括号。 【参考方案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
【讨论】:
"字符串文字总是被解释为 VARCHAR" 这是有道理的。谢谢!以上是关于DB2 CASE WHEN THEN 向所有值添加两个额外的空值的主要内容,如果未能解决你的问题,请参考以下文章