【MYSQL】数据类型强制转换导致数据超预期

-- SQL语句
SELECT
    `t`.`module_id`,
    `ra`.`table_id` -- t.*, ra.*
FROM
    sys_user_auth AS t
JOIN `sys_table` AS `ra` ON `t`.`module_id` = `ra`.`table_id`
AND t.user_role_id = 3
AND t.module_type = 0;

-- 查询结果
--N00 0

-- 字段数据类型
module_id varchar(10)
table_id bigint

-- 测试
select cast('N00' as signed integer)
--0 

-- 强制转换导致结果集异常

-- 修改SQL
SELECT
    `t`.`module_id`,
    `ra`.`table_id` -- t.*, ra.*
FROM
    sys_user_auth AS t
JOIN `sys_table` AS `ra` ON `t`.`module_id` = concat(`ra`.`table_id` )
AND t.user_role_id = 3
AND t.module_type = 0;

参与计算的数据类型应该尽量一致,不一致建议手工转格式,避免异常问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值