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

T-SQL中CTE表自调用计算技术对应的专业术语是什么?

递归公用表表达式(Recursive CTE)

嗨,你提到的这种让CTE自调用、逐步迭代处理数据直到完成目标的技术,在T-SQL里正式叫做递归公用表表达式(Recursive CTE)。

它的核心结构分为两部分:

  • 锚点成员:这是CTE的初始数据集,也就是第一次运行时返回的基础结果,比如你例子里原始的带逗号分隔列表的记录。
  • 递归成员:这部分会引用CTE自身,基于上一次迭代的结果继续处理(比如拆分出一个子字符串,生成新的记录),直到没有符合条件的行可以返回时,递归就会停止。

举个贴合你场景的简单逻辑示例:

WITH tmp AS (
    -- 锚点成员:初始数据
    SELECT 
        ID,
        LEFT(CommaList, CHARINDEX(',', CommaList + ',') - 1) AS Item,
        STUFF(CommaList, 1, CHARINDEX(',', CommaList + ','), '') AS RemainingList
    FROM YourTable
    WHERE CommaList IS NOT NULL AND CommaList <> ''

    UNION ALL

    -- 递归成员:自调用CTE,处理剩余的字符串
    SELECT 
        ID,
        LEFT(RemainingList, CHARINDEX(',', RemainingList + ',') - 1) AS Item,
        STUFF(RemainingList, 1, CHARINDEX(',', RemainingList + ','), '') AS RemainingList
    FROM tmp
    WHERE RemainingList IS NOT NULL AND RemainingList <> ''
)
SELECT ID, Item FROM tmp;

这里的递归成员每次都会从tmp的上一轮结果里拿未处理完的RemainingList,继续拆分出单个元素,直到RemainingList为空,递归就自动终止了——这就是你观察到的“自行运行直至所有子字符串都加载到新记录中”的机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:36:02