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

SQL实现low/med/high类文本评级值到对应数字的映射转换

SQL实现评级文本到数值的映射方案

首先明确两个前置注意事项:

  • 从提供的样本数据看,现有评级字段存在大小写不统一、缩写混用的问题(比如同时存在Low/low、Med是medium的缩写),转换前必须先做文本清洗,否则会出现匹配失败、返回空值的问题
  • 固定映射规则:very low→0、low→1、medium→2、high→3、very high→4

场景1:查询时动态生成数值列(推荐用于临时分析、数据可视化取数)

不需要修改原表结构,在查询语句中直接通过CASE WHEN逻辑做转换即可,该写法兼容绝大多数主流数据库(MySQL、PostgreSQL、SQL Server等):

SELECT 
  Field,
  Disease,
  Rating,
  CASE 
    -- 先去空格、转小写统一格式,避免大小写、前后空格导致匹配失败
    WHEN LOWER(TRIM(Rating)) = 'very low' THEN 0
    WHEN LOWER(TRIM(Rating)) = 'low' THEN 1
    WHEN LOWER(TRIM(Rating)) IN ('medium', 'med') THEN 2 -- 兼容Med缩写
    WHEN LOWER(TRIM(Rating)) = 'high' THEN 3
    WHEN LOWER(TRIM(Rating)) = 'very high' THEN 4
    ELSE NULL -- 匹配不到的异常值返回空,方便后续排查脏数据
  END AS Rating_Score
FROM 替换成你的实际表名;

语句说明:

  • TRIM(Rating):去除评级文本前后可能存在的多余空格,避免因为录入时误加空格导致匹配失败
  • LOWER():将评级文本统一转为小写,不管原数据是首字母大写、全小写还是全大写,都能正常匹配
  • 对medium的匹配额外加入了缩写med的判断,覆盖样本里出现的缩写场景

场景2:在原表中永久新增数值评级列

如果你需要长期使用这个数值评级,不想每次查询都写转换逻辑,可以给表新增固定字段存储映射值,分两步执行:

  1. 新增数值类型字段
ALTER TABLE 替换成你的实际表名
ADD COLUMN Rating_Score TINYINT NULL;
  1. 按照映射规则批量更新字段值
UPDATE 替换成你的实际表名
SET Rating_Score = CASE 
    WHEN LOWER(TRIM(Rating)) = 'very low' THEN 0
    WHEN LOWER(TRIM(Rating)) = 'low' THEN 1
    WHEN LOWER(TRIM(Rating)) IN ('medium', 'med') THEN 2
    WHEN LOWER(TRIM(Rating)) = 'high' THEN 3
    WHEN LOWER(TRIM(Rating)) = 'very high' THEN 4
    ELSE NULL
END;

如果你的数据库支持生成列(计算列),可以配置成自动同步的字段,后续原Rating字段新增、修改时,数值列会自动更新,不需要手动执行更新语句,以MySQL为例的写法:

ALTER TABLE 替换成你的实际表名
ADD COLUMN Rating_Score TINYINT GENERATED ALWAYS AS (
  CASE 
    WHEN LOWER(TRIM(Rating)) = 'very low' THEN 0
    WHEN LOWER(TRIM(Rating)) = 'low' THEN 1
    WHEN LOWER(TRIM(Rating)) IN ('medium', 'med') THEN 2
    WHEN LOWER(TRIM(Rating)) = 'high' THEN 3
    WHEN LOWER(TRIM(Rating)) = 'very high' THEN 4
    ELSE NULL
  END
) STORED;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:51:42