根据换算表转换单位的功能



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

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

我正在考虑创建一个函数来转换单位,该函数根据输入(单位、从单位、到单位(从表中计算转换。
例如,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

感谢@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

最新更新