在create function中返回两个小数点

时间:2015-11-04 04:01:08

标签: sql

我这里有一个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

4 个答案:

答案 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个小数点。