【MYSQL】データ型強制変換によりデータが予想を超える

2468 ワード

-- 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;


計算に参加するデータ型はできるだけ一致し、一致しない場合は手動でフォーマットを変更し、異常な問題を回避することをお勧めします.