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

如何使用SQL将字符串中'-'前的数字替换为固定文本'140'

SQL实现方案:替换字符串中'-'前的数字为'140'

这里有两种简洁的SQL方案可以实现你想要的效果,核心思路是提取-之后的子串,再和硬编码的140拼接起来,同时自动去掉分隔符-:

方案1:使用SUBSTRING_INDEX函数

SUBSTRING_INDEX可以快速截取分隔符前后的内容,当第三个参数为-1时,会返回分隔符最后一次出现之后的所有内容(刚好符合我们的需求):

SELECT 
    CONCAT('140', SUBSTRING_INDEX(your_column, '-', -1)) AS transformed_value
FROM your_table;

验证示例

对于输入字符串"1189-13627273":

  • SUBSTRING_INDEX("1189-13627273", '-', -1) 返回 13627273
  • 拼接140后得到 14013627273,完全匹配期望输出。

方案2:使用LOCATE+SUBSTRING函数

如果你的SQL方言对SUBSTRING_INDEX支持有限,可以用LOCATE找到-的位置,再用SUBSTRING截取后续内容:

SELECT 
    CONCAT('140', SUBSTRING(your_column, LOCATE('-', your_column) + 1)) AS transformed_value
FROM your_table;

函数说明

  • LOCATE('-', your_column):返回-在字符串中的位置(比如1189-13627273中,-的位置是5)
  • SUBSTRING(your_column, 5 + 1):从第6位开始截取,得到13627273
  • 拼接140后得到目标结果。

处理特殊情况(可选)

如果你的数据中存在不含-的字符串,可以用CASE语句做兼容处理:

SELECT 
    CASE 
        WHEN LOCATE('-', your_column) > 0 THEN CONCAT('140', SUBSTRING_INDEX(your_column, '-', -1))
        ELSE your_column  -- 无分隔符时返回原字符串,可根据需求调整
    END AS transformed_value
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:15:56