创建表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的名称)
不工作。任何线索。
感谢。
答案 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等值,您仍会遇到截断问题。