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

如何筛选字符长度与列值?SQLFiddle数据库列匹配需求

嘿,我来帮你解决这个SQL筛选和匹配的问题!先理清楚你的核心需求:找出每个无点单词对应的最长带点单词,同时把目标单词和无点单词所在行的第4列(也就是val字段)对应上对吧?结合你的表结构,我整理了两种实用方案,你可以按需选择:

方案一:精准获取每个无点单词的最长带点单词+对应val

这个方案先筛选出每个无点单词组里的最长带点单词,再关联原表拿到对应的val值,适合你需要唯一最长匹配的场景:

WITH longest_dot_words AS (
    SELECT 
        no_dot,
        MAX(LEN(word)) AS max_word_length,
        MAX(word) AS target_longest_word
    FROM words
    WHERE word LIKE '%.%'  -- 只筛选带点的单词
    GROUP BY no_dot
)
SELECT 
    ldw.target_longest_word,
    ldw.no_dot,
    w.val
FROM longest_dot_words ldw
INNER JOIN words w 
    ON ldw.no_dot = w.no_dot
WHERE w.word = w.no_dot;  -- 确保取到的是无点单词行的val
方案二:为所有带点单词匹配对应无点单词的val

如果你的需求是给每一个带点单词(不管是不是最长)都匹配它所属无点单词的val,用这个更直接:

SELECT 
    w1.word AS target_word,
    w1.no_dot,
    w2.val
FROM words w1
INNER JOIN words w2 
    ON w1.no_dot = w2.no_dot
WHERE w1.word LIKE '%.%'  -- 只处理带点的目标单词
AND w2.word = w2.no_dot;  -- 关联到无点单词的行获取val
关键逻辑拆解
  • 用LEN(word)计算字符长度,MAX(LEN(word))能快速定位每个无点单词组里的最长带点单词长度
  • 通过GROUP BY no_dot按无点单词分组,保证每个无点单词只对应一组最长结果
  • 关联时依赖no_dot字段作为匹配键,精准拿到无点单词所在行的第4列值

要是遇到多个长度相同的最长带点单词,你可以把MAX(word)改成STRING_AGG(word, ', ')来拼接所有符合条件的单词,灵活调整就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:28:28