MySQL的计算字段中的整数

时间:2012-09-19 09:50:18

标签: mysql

我正在尝试查询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命令返回具有单个字段(count)的记录,该字段的类型为longlong(8字节)。我希望它是整数(4字节)

类型
SELECT (Select 1) as count;

使用强制转换如下:

SELECT cast((Select 1) as signed integer) as count;

2 个答案:

答案 0 :(得分:1)

如果您只是投射计算值怎么办?

cast((
    Select sum(COALESCE(v.Cost, 0))
    from variations v
    where v.projectID = p.projectID
    ) 
    as integer
) as total

答案 1 :(得分:0)

CREATE FUNCTION name(parameter paramType, .... ) RETURNS returnType而不是create procedure ...您还应该在函数体的末尾使用return子句。有关更多信息,请查看the documentation常用和功能特定部分。