簡體   English   中英

MySQL計算字段中的整數

[英]Integers in calculated fields for MySQL

我正在嘗試查詢MySQL數據庫。 正如我期望的那樣,以整數形式返回數據庫中存儲的字段。 當存儲過程中計算出一個值時,即使我可以保證該數字將為0或1,也總是將其返回為longlong。

我需要一種方法來確保計算字段的結果仍然作為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;

按以下方式使用強制類型轉換也無濟於事:

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

如果您只轉換計算出的值怎么辦?

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

CREATE FUNCTION name(parameter paramType, .... ) RETURNS returnType而不是create procedure ...您還應該在函數主體的末尾使用return子句。 有關更多信息,請參閱文檔的“公共”部分和“功能特定”部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM