sql—基于转换表转换单位的函数

gdrx4gfi  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(446)

数据库中有一个非常简单的表,其中包含公制单位转换,如下所示:

| 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
hivapdat

hivapdat1#

感谢@gserg的解决方案。
就是这样:

CREATE FUNCTION dbo.Conv_Units(@Unit float, @FromUnit nvarchar(20), @ToUnit nvarchar(20))
RETURNS float
AS
BEGIN
    DECLARE @ConvUnit float;
    DECLARE @Scale float = (select Scale from dbo.UnitsConversion where FromUnit = @FromUnit and ToUnit = @ToUnit)

    SELECT @ConvUnit = @Unit * @Scale

    RETURN @ConvUnit

END
GO

相关问题