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

如何使用SQL SUBSTRING相关函数移除Name_code字段多余WWW_前缀

解决方案

问题原因

你之前使用的SUBSTR(Name_code,4, length(Name_Code)-3)是固定从第4位开始截取,没有区分两种不同长度的前缀:

  • 对XX_开头的字符串,前缀长度为3,从第4位开始截取符合要求
  • 对WWW_开头的字符串,前缀长度为4,从第4位开始会把前缀最后的_也保留下来,得到不符合预期的结果

实现方法

通用兼容写法(支持所有主流SQL数据库)

通过CASE WHEN判断前缀类型,分别截取对应长度:

SELECT 
  CASE
    WHEN Name_code LIKE 'WWW\_%' ESCAPE '\' THEN SUBSTR(Name_code, 5)
    ELSE SUBSTR(Name_code, 4)
  END AS processed_name_code
FROM 你的表名;

注:LIKE语句中对下划线转义是为了避免下划线作为通配符匹配任意字符,部分数据库可省略ESCAPE '\'子句直接用反斜杠转义。

正则简化写法(支持MySQL 8.0+、Oracle、PostgreSQL、SQL Server 2017+等新版本数据库)

直接用正则替换掉开头的WWW_或XX_前缀,逻辑更简洁:

SELECT REGEXP_REPLACE(Name_code, '^(WWW_|XX_)', '') AS processed_name_code
FROM 你的表名;

正则逻辑说明:^匹配字符串开头,(WWW_|XX_)匹配开头的WWW_或者XX_,只会替换最外层的前缀,不会影响中间的字符,完全匹配需求场景。

内容的提问来源于stack exchange,提问作者Deepak Kumar Nayak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:45:06