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

Oracle SQL:字符串列末尾两位数字提取与计算实现咨询

实现方案

针对不同SQL数据库,提供以下实现代码:

MySQL

SELECT
  contract,
  CASE
    WHEN RIGHT(contract, 2) REGEXP '^[0-9]{2}$' THEN CAST(RIGHT(contract, 2) AS UNSIGNED) * 100
    ELSE 20
  END AS result
FROM your_table;

逻辑说明:

  • RIGHT(contract, 2) 提取字符串末尾两位
  • REGEXP '^[0-9]{2}$' 验证提取的内容是否为纯两位数字
  • 符合条件则转为整数并乘以100,否则返回固定值20

PostgreSQL

SELECT
  contract,
  CASE
    WHEN RIGHT(contract, 2) ~ '^[0-9]{2}$' THEN TO_NUMBER(RIGHT(contract, 2), '99') * 100
    ELSE 20
  END AS result
FROM your_table;

逻辑说明:

  • RIGHT(contract, 2) 提取字符串末尾两位
  • ~ '^[0-9]{2}$' 用正则匹配验证是否为纯两位数字
  • 符合条件则转为数字并乘以100,否则返回固定值20

SQL Server

SELECT
  contract,
  CASE
    WHEN LEN(RIGHT(contract, 2)) = 2 AND TRY_CAST(RIGHT(contract, 2) AS INT) IS NOT NULL THEN TRY_CAST(RIGHT(contract, 2) AS INT) * 100
    ELSE 20
  END AS result
FROM your_table;

逻辑说明:

  • RIGHT(contract, 2) 提取字符串末尾两位
  • 先判断提取内容长度是否为2,再用TRY_CAST验证是否可转为整数(确保是纯数字)
  • 符合条件则转为整数并乘以100,否则返回固定值20

边界情况处理

  • 当contract长度不足2位时,提取的内容长度小于2,验证不通过,直接返回20
  • 当末尾两位包含非数字字符时,验证不通过,返回20

内容的提问来源于stack exchange,提问作者Es-Dot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:48:20