在oracle中写了一段sql,执行没问题,迁移到mysql的过程中,替换了字段名的双引号,但是忘了将oracle的连接字符串运算“||”替换成mysql的concat。
sql节选如下:
CREATE TABLE `pc_way` AS
SELECT
`26` || `27` || `28` || `29` seq_no,
`30` || `31` || `32` || `33` || `34` fix_id,
……
`105` || `106` || `107` RVSM_Minimum_Level,
`108` || `109` || `110` VSF_RVSM_Maximum_Level,
t.*
FROM
pc_file t
然后执行就报了
[Err] 1292 - Truncated incorrect DOUBLE
单独执行select并不报错。
多方搜索无果,大多数都是因为查询条件传错类型啊,或者字段指定错了类型什么的。忽然看到一篇文章提到“连接字符串”。顿悟。
sql改成:
create table pc_way_c asSELECT
CONCAT(`26` , `27` , `28` , `29`) seq_no,
CONCAT(`30` , `31` , `32` , `33` , `34`) fix_id,
……
CONCAT(`105` , `106` , `107`) RVSM_Minimum_Level,
CONCAT(`108` , `109` , `110`) VSF_RVSM_Maximum_Level
FROM
pc_file t
受影响的行: 100033
时间: 7.658s
结论:在不同数据库之前迁移sql的过程中,一定要注意数据库的差异。