存储在char列中,从db2中的十进制列获取

时间:2010-11-16 05:05:34

标签: db2

创建表test1(无小数(4,2),名称为char(10))

create table test2(no char(1),name char(10))

插入test1值(1,'aa') 插入test1值(2,'ab') 插入test1值(3,'ac') 插入test1值(4,'ad') 插入test1值(null,'ad')

插入test2(不,名称)(选择强制转换(否为char(1)),来自test1的名称)

不工作。任何线索。

感谢。

1 个答案:

答案 0 :(得分:0)

您是否故意使用CHAR而不是VARCHAR? VARCHAR不会用空格填充文本。

当我运行插入时,出现以下错误:

insert into test2 (no,name) (select cast(no as char(1)),name from test1)
SQL0445W  Value "1.00  " has been truncated.  SQLSTATE=01004

实际插入对我有效,但它表明你需要CHAR(4)或VARCHAR(4)而不是CHAR(1)。

如果要自动删除小数点后的数字,可以先将值转换为BIGINT:

insert into test2 (no,name) (
  select 
    cast(cast(no as bigint) as char(1)),
    name
  from test1
)

请注意,对于10或-1等值,您仍会遇到截断问题。