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

SQL中如何将货币符号转换为对应标准货币代码

货币符号转ISO标准货币代码实现方案

完全可以实现,核心要先解决部分货币符号多币种共用的歧义问题,不要直接做简单的1:1硬映射——比如$不是美元专属,加元、澳元、港币等十多种货币都用这个符号,£、¥也存在多币种共用的情况。具体落地可以按下面的步骤做,能覆盖欧元、加元等绝大多数主流货币场景:

  • 第一步:先匹配无歧义专属符号
    先整理1:1无冲突的符号映射表,这部分可以直接转换不需要额外判断,常见的专属符号对应关系如下:

    • € → EUR(欧元)
    • ₽ → RUB(俄罗斯卢布)
    • ₹ → INR(印度卢比)
    • ₩ → KRW(韩元)
    • ₺ → TRY(土耳其里拉)
    • ₦ → NGN(尼日利亚奈拉)
      另外如果你的数据里存在带地区前缀的符号(比如CA$、US$、AU$、CN¥),优先匹配这部分内容,前缀直接对应货币所属地区,准确率100%,可以先把这部分数据处理完减少后续歧义处理量。
  • 第二步:处理歧义符号的映射
    针对$、£、¥这类多币种共用的符号,不要直接写死映射关系,按优先级走判断规则:

    1. 优先用同条数据的关联字段判断:如果数据源里附带交易国家/地区、结算地这类字段,直接结合字段匹配即可,比如$对应国家字段为加拿大就映射CAD,为美国就映射USD;£对应国家为英国就映射GBP,这是准确率最高的判断方式。
    2. 没有辅助字段就用业务场景白名单裁剪:你本身有一个存标准货币代码的数据源,可以先把这个数据源里实际出现过的货币代码整理成白名单,比如你的业务是北美跨境结算,白名单里只有USD、CAD、EUR、GBP四种货币,那碰到$符号就只需要在白名单对应的候选里判断,不用考虑其他小众币种,大幅降低误判概率。
    3. 最后加兜底校验:把经过前两步还没法确定映射关系的记录打上待校验标记,抽人工核对,同时迭代你的映射规则即可。

下面是一段可直接参考的核心转换逻辑代码:

# 无歧义专属符号映射表
unambiguous_symbol_map = {
    "€": "EUR",
    "₽": "RUB",
    "₹": "INR",
    "₩": "KRW",
    "₺": "TRY",
    "₦": "NGN"
}

# 歧义符号+地区匹配规则
ambiguous_symbol_rule = {
    "$": {
        "US": "USD",
        "CA": "CAD",
        "AU": "AUD",
        "HK": "HKD",
        "SG": "SGD",
        "NZ": "NZD"
    },
    "£": {
        "GB": "GBP",
        "EG": "EGP",
        "SY": "SYP"
    },
    "¥": {
        "CN": "CNY",
        "JP": "JPY"
    }
}

def convert_symbol_to_code(symbol: str, region_code: str = None, scene_currency_whitelist: list = None) -> str:
    # 先匹配带前缀的特殊符号,比如CA$、US$
    for prefix, code in [("CA", "CAD"), ("US", "USD"), ("AU", "AUD"), ("HK", "HKD"), ("CN", "CNY"), ("JP", "JPY")]:
        if symbol.startswith(prefix) and symbol.endswith(("$", "¥")):
            return code
    # 匹配无歧义符号
    if symbol in unambiguous_symbol_map:
        return unambiguous_symbol_map[symbol]
    # 处理歧义符号
    if symbol in ambiguous_symbol_rule:
        # 优先用地区码匹配
        if region_code and region_code in ambiguous_symbol_rule[symbol]:
            return ambiguous_symbol_rule[symbol][region_code]
        # 用场景白名单匹配
        if scene_currency_whitelist:
            candidate_codes = [c for c in ambiguous_symbol_rule[symbol].values() if c in scene_currency_whitelist]
            if len(candidate_codes) == 1:
                return candidate_codes[0]
    # 无法匹配的返回标记走人工校验
    return "NEED_MANUAL_CHECK"

注意:不要直接照搬全量公共货币映射表,一定要结合你自己的业务场景裁剪规则,比如你做中欧贸易场景根本不会出现埃及镑、尼日利亚奈拉这类货币,冗余的映射规则反而会导致误判。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:54:27