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

SQL提取无数字分类字段:如何去除分类中的数字与括号内容?

SQL提取分类列纯文本内容解决方案

根据你给出的分类数据特点,需要处理两种干扰内容:开头的数字前缀+空格,以及结尾的(数字)后缀。以下是不同SQL方言的实现方案:

MySQL 方案

使用REGEXP_REPLACE正则替换函数,分两步移除干扰内容,最后用TRIM清理多余空格:

SELECT 
  TRIM(
    REGEXP_REPLACE(
      REGEXP_REPLACE(category, '^[0-9]+ ', ''), -- 移除开头连续数字+空格
      ' \\([0-9]+\\)$', '' -- 移除结尾的空格+括号数字组合
    )
  ) AS clean_category
FROM your_table;

SQL Server 方案(2017及以上版本)

同样使用正则替换,语法和MySQL略有差异:

SELECT 
  TRIM(
    REGEXP_REPLACE(
      REGEXP_REPLACE(category, '^[0-9]+ ', ''),
      ' \([0-9]+\)$', ''
    )
  ) AS clean_category
FROM your_table;

如果是低于2017的版本,可使用字符串处理函数组合实现:

SELECT 
  TRIM(
    CASE 
      WHEN CHARINDEX('(', category) > 0 THEN LEFT(STUFF(category, 1, ISNULL(NULLIF(CHARINDEX(' ', category), 0), 0), ''), CHARINDEX('(', STUFF(category, 1, ISNULL(NULLIF(CHARINDEX(' ', category), 0), 0), '')) - 1)
      ELSE STUFF(category, 1, ISNULL(NULLIF(CHARINDEX(' ', category), 0), 0), '')
    END
  ) AS clean_category
FROM your_table;

PostgreSQL 方案

利用PostgreSQL的正则替换功能:

SELECT 
  TRIM(
    REGEXP_REPLACE(
      REGEXP_REPLACE(category, '^[0-9]+ ', '', 'g'),
      ' \([0-9]+\)$', '', 'g'
    )
  ) AS clean_category
FROM your_table;

以上方案会自动处理所有情况:

  • 带数字前缀和括号后缀的内容(如400 optics (421))会被清理为optics
  • 仅带数字前缀的内容(如81000 plumbing)会被清理为plumbing
  • 纯文本内容(如Accessories)会原样保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:12:16