Sql 通用表表达式-递归调用

Sql 通用表表达式-递归调用,sql,sql-server,Sql,Sql Server,我找到了这段代码 输出: 我无法正确理解代码的含义,尤其是长度的用法 将查询结果更改为包含长度列时,请查看查询结果 WITH ShowMessage(STATEMENT, LENGTH) AS ( SELECT STATEMENT = CAST('I Like ' AS VARCHAR(300)), LEN('I Like ') UNION ALL SELECT CAST(STATEMENT + 'CodeProject! ' AS VARC

我找到了这段代码

输出:


我无法正确理解代码的含义,尤其是长度的用法

将查询结果更改为包含长度列时,请查看查询结果

WITH ShowMessage(STATEMENT, LENGTH)
AS
(
    SELECT  STATEMENT = CAST('I Like ' AS VARCHAR(300)), 
            LEN('I Like ')
    UNION ALL
    SELECT  CAST(STATEMENT + 'CodeProject! ' AS VARCHAR(300)), 
            LEN(STATEMENT) FROM ShowMessage
    WHERE   LENGTH < 300
)
SELECT  STATEMENT,
        LENGTH
FROM    ShowMessage
您将注意到,在每次递归中,字符串的长度都会变长

当长度增长到300以上时,recursice循环将结束

WITH ShowMessage(STATEMENT, LENGTH)
AS
(
    SELECT  STATEMENT = CAST('I Like ' AS VARCHAR(300)), 
            LEN('I Like ')
    UNION ALL
    SELECT  CAST(STATEMENT + 'CodeProject! ' AS VARCHAR(300)), 
            LEN(STATEMENT) FROM ShowMessage
    WHERE   LENGTH < 300
)
SELECT  STATEMENT,
        LENGTH
FROM    ShowMessage