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

存储在db2中从十进制列获取的char列中,db2,Db2,创建表test1,无小数4,2,名称char10 创建表test2 no char1,名称char10 在test1值1中插入“aa” 在test1值2中插入'ab' 在test1值3中插入'ac' 在测试1值4中插入'ad' 将“ad”插入到test1值ll中 插入到test2 no,name选择castno作为char1,name来自test1 不工作。任何线索 谢谢。您是否有意使用CHAR而不是VARCHAR?VARCHAR不会在文本中填充空格 运行insert时,出现以下错误: inse

创建表test1,无小数4,2,名称char10

创建表test2 no char1,名称char10

在test1值1中插入“aa” 在test1值2中插入'ab' 在test1值3中插入'ac' 在测试1值4中插入'ad' 将“ad”插入到test1值ll中

插入到test2 no,name选择castno作为char1,name来自test1

不工作。任何线索


谢谢。

您是否有意使用CHAR而不是VARCHAR?VARCHAR不会在文本中填充空格

运行insert时,出现以下错误:

insert into test2 (no,name) (select cast(no as char(1)),name from test1)
SQL0445W  Value "1.00  " has been truncated.  SQLSTATE=01004
实际的insert对我有用,但它表明您需要CHAR4或VARCHAR4而不是CHAR1

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

insert into test2 (no,name) (
  select 
    cast(cast(no as bigint) as char(1)),
    name
  from test1
)
请注意,对于10或-1之类的值,仍然会遇到截断问题