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

如何通过SQL查询去除冒号分隔符,筛选状态为Success的记录

没问题,我来帮你搞定这个查询需求!下面根据不同数据库类型,给你对应的解决方案:

针对需求的查询实现

首先假设你的表名为your_table,存储目标内容的字段名为target_column(你可以根据实际情况替换这两个名称)。我们需要从中筛选出状态为Success的记录,并提取冒号:后的编码(如rp033、ts088)。

1. MySQL/MariaDB 版本

SELECT 
  SUBSTRING_INDEX(SUBSTRING_INDEX(target_column, ':', -1), ' ', 1) AS display_name_code
FROM 
  your_table
WHERE 
  target_column LIKE '%Success%'
  AND target_column LIKE 'Joining :%';
  • 逻辑拆解:
    • SUBSTRING_INDEX(target_column, ':', -1):先截取冒号之后的全部内容
    • 再用SUBSTRING_INDEX(..., ' ', 1):截取上述结果中第一个空格前的部分,就是我们要的编码
    • WHERE条件确保只匹配包含Success且格式为Joining :xxx的记录

2. PostgreSQL 版本

SELECT 
  SPLIT_PART(SPLIT_PART(target_column, ':', 2), ' ', 1) AS display_name_code
FROM 
  your_table
WHERE 
  target_column LIKE '%Success%'
  AND target_column LIKE 'Joining :%';
  • 逻辑拆解:
    • SPLIT_PART(target_column, ':', 2):按冒号分割内容,取第二部分(冒号后的内容)
    • SPLIT_PART(..., ' ', 1):再按空格分割,取第一部分得到目标编码

3. SQL Server 版本

SELECT 
  LEFT(
    SUBSTRING(target_column, CHARINDEX(':', target_column) + 1, LEN(target_column)), 
    CHARINDEX(' ', SUBSTRING(target_column, CHARINDEX(':', target_column) + 1, LEN(target_column))) - 1
  ) AS display_name_code
FROM 
  your_table
WHERE 
  target_column LIKE '%Success%'
  AND target_column LIKE 'Joining :%';
  • 逻辑拆解:
    • CHARINDEX(':', target_column):定位冒号的位置,加1后截取冒号后的所有内容
    • LEFT(..., CHARINDEX(' ', ...)-1):截取到第一个空格前的部分,得到目标编码

特殊情况:字段包含多个Joining条目

如果你的target_column字段里同时存在多个Joining :xxx Status格式的内容(比如用户给出的示例字符串:display_Name Status Joining :st099 Error Joining :rp033 Success Joining :ts088 Success),可以用以下MySQL语句拆分后筛选:

WITH split_rows AS (
  SELECT 
    SUBSTRING_INDEX(SUBSTRING_INDEX(target_column, 'Joining :', n), ' ', 2) AS entry
  FROM 
    your_table
    JOIN (SELECT 1 AS n UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS numbers 
      ON CHAR_LENGTH(target_column) - CHAR_LENGTH(REPLACE(target_column, 'Joining :', '')) >= (n-1)*CHAR_LENGTH('Joining :')
)
SELECT 
  SUBSTRING_INDEX(entry, ' ', 1) AS display_name_code
FROM 
  split_rows
WHERE 
  entry LIKE '%Success';
  • 逻辑拆解:先通过数字表拆分出每个独立的Joining :xxx Status条目,再筛选出状态为Success的条目,最后提取编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:45:22