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

SQL新手求助:如何结合Substring、Case、Trim编写嵌套查询

问题解决:按顺序组合Substring、Case与Trim的SQL嵌套查询

你的代码核心问题是逻辑拆分到两个独立SELECT语句中,且存在列名错误、执行顺序未串联的问题。以下是修正后的代码,严格按照Substring提取→Case修正→Trim处理的顺序实现:

修正后代码

-- 第三层:最终Trim并拼接结果
SELECT
  TRIM(lion_corr) || '_' || TRIM(tiger) || '_' || TRIM(bear_corr) AS new_imp_animal
FROM (
  -- 第二层:用Case修正提取后的字段
  SELECT
    lioness,
    tiger,
    CASE WHEN LENGTH(bear) = 4 THEN bear ELSE CONCAT('0', bear) END AS bear_corr,
    -- 修正原代码列名错误:原CASE里的`lion`应为`lioness`
    CASE WHEN LENGTH(lioness) = 7 THEN lioness ELSE CONCAT('0', lioness) END AS lion_corr
  FROM (
    -- 第一层:用Substring提取原始字段
    SELECT
      dt,
      SUBSTRING_INDEX(SUBSTRING_INDEX(dt, '你的分隔符1', 2), '你的分隔符1', -1) AS lioness, -- 补全实际分隔符与参数
      SUBSTRING_INDEX(SUBSTRING_INDEX(dt, '你的分隔符2', 2), '你的分隔符2', -1) AS tiger,   -- 补全实际分隔符与参数
      SUBSTRING_INDEX(dt, '你的分隔符3', -1) AS bear                                   -- 补全实际分隔符与参数
    FROM Animaltab
  ) AS step1_extract
) AS step2_case_correct;

关键修正说明

  • 串联执行顺序:用三层嵌套查询明确步骤,确保上一步的结果传递到下一步,严格遵循你要求的执行顺序。
  • 列名统一:修正原CASE语句里的笔误,子查询中提取的列是lioness,而非lion,需保持名称一致。
  • 语句整合:将原本两个独立的SELECT合并为一个嵌套查询,避免无法访问前序结果的问题。
  • 方言适配:如果使用MySQL,拼接符||需替换为CONCAT()函数,写法为CONCAT(TRIM(lion_corr), '_', TRIM(tiger), '_', TRIM(bear_corr))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:15:47