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

SQL数据库字段拆分:WEB类记录按'-'拆分,OCM类保留原内容

按规则拆分SQL字段的解决方案

根据你的需求,我们可以通过CASE语句结合字符串拆分函数实现字段的规则化拆分,以下是主流SQL数据库的实现方式:

MySQL 实现

SELECT
  CASE
    WHEN your_column LIKE '%WEB%' THEN SUBSTRING_INDEX(your_column, '-', 1)
    WHEN your_column LIKE '%OCM%' THEN your_column
  END AS first_field,
  CASE
    WHEN your_column LIKE '%WEB%' THEN SUBSTRING_INDEX(your_column, '-', -1)
    WHEN your_column LIKE '%OCM%' THEN NULL
  END AS second_field
FROM your_table;
  • SUBSTRING_INDEX(your_column, '-', 1):截取-符号第一次出现前的内容,作为WEB类记录的第一个字段
  • SUBSTRING_INDEX(your_column, '-', -1):截取-符号最后一次出现后的内容,作为WEB类记录的第二个字段
  • 通过CASE分支判断匹配规则,分别赋值

SQL Server 实现

SQL Server没有直接的SUBSTRING_INDEX函数,需要结合CHARINDEX和SUBSTRING实现:

SELECT
  CASE
    WHEN your_column LIKE '%WEB%' THEN LEFT(your_column, CHARINDEX('-', your_column) - 1)
    WHEN your_column LIKE '%OCM%' THEN your_column
  END AS first_field,
  CASE
    WHEN your_column LIKE '%WEB%' THEN RIGHT(your_column, LEN(your_column) - CHARINDEX('-', your_column))
    WHEN your_column LIKE '%OCM%' THEN NULL
  END AS second_field
FROM your_table;
  • CHARINDEX('-', your_column):定位-符号的位置
  • LEFT和RIGHT函数分别截取符号前后的内容

PostgreSQL 实现

PostgreSQL的SPLIT_PART函数可以直接按分隔符拆分字段:

SELECT
  CASE
    WHEN your_column LIKE '%WEB%' THEN SPLIT_PART(your_column, '-', 1)
    WHEN your_column LIKE '%OCM%' THEN your_column
  END AS first_field,
  CASE
    WHEN your_column LIKE '%WEB%' THEN SPLIT_PART(your_column, '-', 2)
    WHEN your_column LIKE '%OCM%' THEN NULL
  END AS second_field
FROM your_table;
  • SPLIT_PART(your_column, '-', n):直接取拆分后的第n部分内容

验证示例

针对你给出的测试记录,执行以上语句会得到如下结果:

原记录first_fieldsecond_field
WEBNOTE-053122WEBNOTE053122
WEBEVV-121222WEBEVV121222
OCM-TIXOC2OCM-TIXOC2NULL
OCM-LNTHEOCMOCM-LNTHEOCMNULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:10:48