又遇到一个因为遗漏单引号造成的兼容性问题(错误5:日期格式(char(10)/varchar(10))转换问题)

-- 错误示例
-- OceanBase-3.x SQL ERROR [5114] [42000]: Invalid numeric
-- OceanBase-4.x ERROR 1292 (22007): Truncated incorrect DECIMAL value
truncate table hksdevdb.test_c;
insert into hksdevdb.test_c(C1,C2)
select 
    20470417 as C1,
    '2047-04-17' as C2
from 
    hksdevdb.test_a
where 
    A5 = 2047-04-17 -- 出错行 A5: char(10)/varchar(10),OB默认将其解析为数字执行,导致查询结果为空
;

-- 正确示例(${TX_DATE} -> '${TX_DATE}')
truncate table hksdevdb.test_c;
insert into hksdevdb.test_c(C1,C2)
select 
    20470417 as C1,
    '2047-04-17' as C2
from 
    hksdevdb.test_a
where 
    A5 = '2047-04-17'
;
2 个赞

日期参数容易引发血案,有时候多了引号也是不行的~

2 个赞

嗯,而且相同的错误在V3和V4中的表现不同,特别是不报错但是结果不对的场景下,很难发现!!!

1 个赞

特别是不报错但是结果不对的场景下,很难发现