2010-11-16 74 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碰上截斷問題的值。