好吧,这宁愿是一件非常简单的事情,但我自己也想不通。
在 MYSQL 服务器的存储过程中尝试以下行时,它将列数据类型转换或设置为 BIGINT 而不是预期的 INT
CASE `L`.`Code` WHEN 'ABCD' THEN 0 ELSE `XL`.`ID` END as XLID
神奇的是,如果我从中删除 0,它就会按预期返回 INT 作为数据类型。所以这个 0 肯定是罪魁祸首,但我不明白为什么以及如何解决这个问题?我尝试使用 CAST,但它不允许将 INT 转换为 INT。
会很有帮助。
最佳答案
以下技巧可以提供帮助:
DELIMITER //
CREATE FUNCTION `return_integer`(`number` INT UNSIGNED)
RETURNS INT UNSIGNED DETERMINISTIC
BEGIN
RETURN `number`;
END//
DELIMITER ;
SELECT
CASE `L`.`Code`
WHEN 'ABCD' THEN `return_integer`(0)
ELSE `L`.`ID`
END AS XLID
FROM `table_name` `L`;
关于mysql - MySQL 中的 CASE 强制列数据类型为 BIGINT 而不是 INT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27907817/