You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL或PowerShell中计算含分数上标的价格值

分数价格转可计算数值的SQL与PowerShell解决方案

SQL 解决方案

针对SQL环境,我们可以通过自定义函数替换特殊分数字符为对应小数,生成可计算的表达式,甚至直接计算出结果。以下以SQL Server为例:

自定义转换函数

CREATE FUNCTION dbo.ConvertFractionPrice(@input VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
    -- 替换各类分数字符为对应小数字符串
    SET @input = REPLACE(@input, '¼', '.25');
    SET @input = REPLACE(@input, '½', '.5');
    SET @input = REPLACE(@input, '¾', '.75');
    SET @input = REPLACE(@input, '⅛', '.125');
    SET @input = REPLACE(@input, '⅜', '.375');
    SET @input = REPLACE(@input, '⅝', '.625');
    SET @input = REPLACE(@input, '⅞', '.875');
    
    RETURN @input;
END;

使用示例

  1. 生成可计算的表达式字符串
SELECT dbo.ConvertFractionPrice('78-22¼') AS ComputableString;
-- 输出结果:78-22.25
  1. 直接计算数值结果
DECLARE @result DECIMAL(10,3);
DECLARE @expr VARCHAR(50) = dbo.ConvertFractionPrice('78-22¼');
EXEC sp_executesql N'SELECT @res = ' + @expr, N'@res DECIMAL(10,3) OUTPUT', @res = @result OUTPUT;
SELECT @result AS CalculatedValue;
-- 输出结果:55.75

注意:如果是MySQL/PostgreSQL,可替换为REGEXP_REPLACE实现类似逻辑,核心是完成分数到小数的映射替换。

PowerShell 解决方案

PowerShell通过正则替换和表达式执行,可快速完成转换与计算:

自定义转换函数

function Convert-FractionPrice {
    param(
        [Parameter(Mandatory=$true)]
        [string]$InputString
    )

    # 定义分数与对应小数的映射表
    $fractionMap = @{
        '¼' = '.25'
        '½' = '.5'
        '¾' = '.75'
        '⅛' = '.125'
        '⅜' = '.375'
        '⅝' = '.625'
        '⅞' = '.875'
    }

    # 遍历替换所有分数字符
    foreach ($fraction in $fractionMap.Keys) {
        $InputString = $InputString -replace [regex]::Escape($fraction), $fractionMap[$fraction]
    }

    # 计算表达式结果
    $calculatedValue = Invoke-Expression $InputString

    # 返回转换后的字符串与计算结果
    return [PSCustomObject]@{
        ComputableString = $InputString
        CalculatedValue  = $calculatedValue
    }
}

使用示例

# 转换并计算单个价格
Convert-FractionPrice -InputString '78-22¼'
Convert-FractionPrice -InputString '78-18⅝'

# 批量处理(假设价格列表存在数组中)
$priceList = @('78-22¼', '78-18⅝', '100-½')
$priceList | ForEach-Object { Convert-FractionPrice -InputString $_ }

执行后会返回包含ComputableString(可计算表达式)和CalculatedValue(最终数值)的对象,例如第一个示例返回:

ComputableString CalculatedValue
---------------- ----------------
78-22.25                  55.75

内容的提问来源于stack exchange,提问作者Himsy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:01:11