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

过滤英文词表中已有单数形式的复数单词遇SQL逻辑问题求助

问题分析与解决方案

你的SQL逻辑完全搞反了:当前逻辑是「给单词加s后,若存在于以s结尾的词列表中,就标记原单词为复数」,这会导致像that这类单数词,只要表中存在thats,就被错误标记成复数,完全偏离了你的需求。

你真正要做的是识别出本身是复数(以s结尾),且对应单数形式(去掉末尾s)存在于表中的单词,以此来排除它们。

修正后的SQL语句

SELECT
  word,
  CASE 
    -- 先锁定以s结尾的复数候选词
    WHEN word LIKE '%s' 
         -- 再验证去掉末尾s后的单数形式是否存在于表内
         AND LEFT(word, LENGTH(word)-1) IN (SELECT word FROM `words.freq`)
    THEN 'plural'
    ELSE 'sing'
  END AS plural
FROM `words.freq` 
LIMIT 1000;

直接排除复数词的写法

如果不需要标记,而是直接过滤掉这些有对应单数的复数词,可以用以下语句:

SELECT word, count
FROM `words.freq`
WHERE NOT (
  word LIKE '%s' 
  AND LEFT(word, LENGTH(word)-1) IN (SELECT word FROM `words.freq`)
)
LIMIT 1000;

补充说明

上述逻辑仅针对常规加s的复数词,若你的表包含不规则复数(比如bus→buses、baby→babies),需要额外处理这类特殊规则,但如果只覆盖常规场景,以上语句足够满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:18:27