UnitFrom

问题描述 投票:0回答:1

数据库中有一个非常简单的表,里面有公制单位换算,看起来像。

| UnitFrom | UnitTo | Scale |
|    m     |   mm   |  1000 |
|    m     |   cm   |   100 |
    etc.

我想创建一个转换单位的函数 根据输入(Unit, FromUnit, ToUnit)来计算表中的转换值。比如说 Conv_Units(0.1, 'm', 'cm') 返回100。

这可能吗?我想出的是下面的方法,但是行不通。

CREATE FUNCTION dbo.Conv_Units
(
    [@Unit] float
    , [@FromUnit] nvarchar(20)
    , [@ToUnit] nvarchar(20)
);
RETURNS float
AS
BEGIN

    DECLARE @ConvUnit float;
    DECLARE @Unit float;
    DECLARE @FromUnit nvarchar(20);
    DECLARE @ToUnit nvarchar(20);
    DECLARE @Scale float = (select Scale from dbo.UnitsConversion where FromUnit = @FromUnit and ToUnit = @ToUnit);

    SELECT @ConvUnit = @Unit * @Scale

    RETURN @ConvUnit

END
GO
sql sql-server tsql sql-server-2017 stored-functions
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.