[英]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.