我正在尝试查询 MySQL 数据库。以整数形式存储在数据库中的字段以整数形式返回,正如我所期望的那样。当在存储过程中计算出一个值时,它总是以 longlong 形式返回,即使我可以保证该数字是 0 或 1。
我需要一种方法来确保计算字段的结果仍以 int 形式返回。
有趣的是,在视图中进行计算,然后查询该视图似乎可以解决问题,但它会对性能造成巨大影响。
编辑
我尝试使用的各种程序的一个示例是:
DELIMITER //
CREATE PROCEDURE getProjectFinance(IN projectID varchar(30))
BEGIN
SELECT p.projectID as id,
(Select sum(COALESCE(v.Cost, 0))
from variations v
where v.projectID = p.projectID) as total
FROM Projects p
WHERE p.projectID = projectID;
END//
DELIMITER ;
DELIMITER //
CREATE PROCEDURE getAllProjectsFinance()
BEGIN
SELECT p.projectID as id,
(Select sum(COALESCE(v.Cost, 0))
from variations v
where v.projectID = p.projectID) as total
FROM Projects p
END//
DELIMITER ;
编辑 2
我试图稍微简化这个问题。下面的 SQL 命令返回一个带有单个字段(计数)的记录,该字段的类型为 longlong(8 个字节)。我希望它是整数类型(4 个字节)
SELECT (Select 1) as count;
如下使用 cast 也无济于事:
SELECT cast((Select 1) as signed integer) as count;