用不同类型的字段作为联表条件,可以查询,但是删除时会报错Invalid numeric

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】4.2.5.6
【问题描述】多表联表,用不同类型的字段作为关联条件(例如on bigint字段=varchar字段)查询时可以查询出来,但是用相同条件联表删除时会报错Invalid numeric
【复现路径】

CREATE TABLE test_a (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
PRIMARY KEY (id)
) AUTO_INCREMENT = 3 AUTO_INCREMENT_MODE = ‘ORDER’ DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 LOB_INROW_THRESHOLD=4096;
insert into test_a(id,name) values
(1,‘testa’),
(2,‘testb’);
CREATE TABLE test_b (
b_id bigint(20) NOT NULL AUTO_INCREMENT,
a_id varchar(200) NOT NULL,
PRIMARY KEY (b_id)
) AUTO_INCREMENT = 3 AUTO_INCREMENT_MODE = ‘ORDER’ DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 LOB_INROW_THRESHOLD=4096;
insert into test_b(b_id,a_id) values
(1,‘1’),
(2,‘1,2’);

— 查询有结果
SELECT a.*, b.* FROM test_a a LEFT JOIN test_b b ON a.id = b.a_id WHERE a.id = 1;

— 删除报错Invalid numeric
DELETE a.*, b.* FROM test_a a LEFT JOIN test_b b ON a.id = b.a_id WHERE a.id = 1;

— 删除时关联条件先排除不能转成数字的行就可以了。。
DELETE a.*, b.* FROM test_a a LEFT JOIN test_b b ON b.a_id REGEXP ‘^[0-9]+$’ AND a.id = b.a_id WHERE a.id = 1;

预期内的,可以修改一下 sql_mode变量,非严格模式应该不会报错