0

我在这里找到了这段代码

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 FROM ShowMessage

输出:

在此处输入图像描述

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

4

1 回答 1

2

当您将其更改为包含 LENGTH 列时,请查看查询结果。

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,递归循环将结束

于 2013-05-30T04:22:08.950 回答