mysql - MySQL 中的 CASE 强制列数据类型为 BIGINT 而不是 INT

标签 mysql amazon-web-services mysql-workbench

好吧,这宁愿是一件非常简单的事情,但我自己也想不通。

在 MYSQL 服务器的存储过程中尝试以下行时,它将列数据类型转换或设置为 BIGINT 而不是预期的 INT

CASE `L`.`Code` WHEN 'ABCD' THEN 0 ELSE `XL`.`ID` END as XLID

神奇的是,如果我从中删除 0,它就会按预期返回 INT 作为数据类型。所以这个 0 肯定是罪魁祸首,但我不明白为什么以及如何解决这个问题?我尝试使用 CAST,但它不允许将 INT 转换为 INT。

This trick also didn't work

会很有帮助。

最佳答案

以下技巧可以提供帮助:

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/

相关文章:

mysql - 从 mysql 进行备份的最佳工具

Mysql创建链接两个表的 View

PHP - 将数据输入 MySQL 单元格

javascript - 错误 : Missing credentials in config -/nodeapp/node_modules/aws-sdk/lib/request. js:31

amazon-web-services - 如何将流量引导到每个地理位置的不同服务器?

node.js - 如何在nodejs中获取用户的身份池Id

mysql - 在 MySQL Workbench 中,如何在我的本地主机上创建一个 mysql 服务器?

mysql - before update 触发器生成哈希的语法

mysql - 从 Mysql 中的正则表达式得到错误 'repetition-operator operand invalid'

php - 通过 SQL 查询在 php 中按 header 分组