2010-11-16 73 views
0

创建表TEST1(无小数(4,2),名称CHAR(10))存储在字符列从十进制柱获得在DB2

创建表TEST2(无炭(1),名称CHAR(10) )

INSERT INTO TEST1值(1, 'AA') INSERT INTO TEST1值(2, 'AB') INSERT INTO TEST1值(3, 'AC') INSERT INTO TEST1值(4,'广告') insert into test1 values(null,'ad')

insert into test2(no,name)(select cast(no as char(1)),name f rom test1)

无法正常工作。任何线索。

谢谢。

回答

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碰上截断问题的值。