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

如何用SQL查询字符串中第二个best后的对应单词

提取文本中第二个best后首个单词的SQL实现方案

前提说明

现有数据表name_records结构及示例数据如下:

IDName
1Ram played best And he best one
2Shiv is best in reading and he is best player
3X is best cook

需求规则:提取Name字段字符串中第二次出现的单词best之后的第一个单词,不存在第二个best则返回n/a,期望输出格式如下:

IDSecond best word
1one
2player
3n/a

实现代码

MySQL 版本

SELECT 
  ID,
  CASE
    -- 计算best出现次数,判断是否≥2
    WHEN (LENGTH(Name) - LENGTH(REPLACE(Name, 'best', ''))) / LENGTH('best') >= 2
    THEN SUBSTRING_INDEX(
      TRIM(SUBSTRING_INDEX(Name, 'best', 3)), -- 截取第二个best之后的所有内容并去除首尾空格
      ' ',
      1 -- 取第一个空格前的内容即为目标单词
    )
    ELSE 'n/a'
  END AS `Second best word`
FROM name_records;

PostgreSQL 版本

SELECT 
  ID,
  CASE
    WHEN array_length(string_to_array(Name, 'best'), 1) >= 3
    THEN split_part(trim(split_part(Name, 'best', 3)), ' ', 1)
    ELSE 'n/a'
  END AS "Second best word"
FROM name_records;

逻辑说明

  • 首先判断Name中best的出现次数,不足2次直接返回n/a
  • 截取第二个best之后的所有内容,去除首尾空格后,按空格拆分取第一个片段即为目标单词

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:48:04