我这里有一个sql create函数,它将返回float数据类型。 我想知道如何将结果显示为两位小数。
ALTER FUNCTION [dbo].[udf_get_total]
(
-- Add the parameters for the function here
@code as int
)
RETURNS FLOAT
AS
BEGIN
-- Declare the return variable here
DECLARE @quantity as FLOAT
DECLARE @price as FLOAT
-- Add the T-SQL statements to compute the return value here
SET @quantity = (SELECT quantity FROM Requested_Item where Code_id = @code)
SET @price = (SELECT price FROM Requested_Item where Code_id = @code)
-- Return the result of the function
RETURN @quantity * @price
END
样本结果:
1632.1740985705144
6323.8092596543638
答案 0 :(得分:1)
使用CAST
select cast(float_column as decimal(10,2))
from your_table
decimal(10,2)
将在该点之前显示10位数字,在此之后显示2位数。
答案 1 :(得分:1)
首先。我重写了你的功能。你要两次查询你的牌桌。这可以通过运行单个SELECT语句来完成。看到这段代码:
ALTER FUNCTION [dbo].[udf_get_total]
(
@code AS INT
)
RETURNS FLOAT
AS
BEGIN
-- Declare the return variable here
DECLARE @quantity AS FLOAT
, @price AS FLOAT;
SELECT @quantity = quantity, @price = price
FROM Requested_Item
WHERE Code_id = @code;
-- Return the result of the function
RETURN @quantity * @price;
END
现在如何正确格式化你的数字?我用CEILING
和一些数学运算这个方法:
DECLARE @first FLOAT = 1632.1740985705144
, @second FLOAT = 6323.8092596543638;
SELECT FLOOR(@first * 100) / 100
, FLOOR(@second * 100) / 100;
它带来了请求的结果:
╔═════════╦════════╗
║ 1632.17 ║ 6323.8 ║
╚═════════╩════════╝
答案 2 :(得分:0)
试试这个:
RETURN TRUNCATE(@quantity * @price, 2)
末尾的2表示将有2个小数点。你可以在任何地方使用TRUNCATE
函数 - 唯一的缺点是它并没有真正围绕数字。
答案 3 :(得分:0)
我只将我的函数的return语句改为
RETURN CAST ((@total / @cur_amount) as decimal(10,2))
,它显示2个小数点。