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

再帰ごとに、文字列の長さが長くなることに気付くでしょう。

再帰ループは、leng が 300 を超えると終了します。

于 2013-05-30T04:22:08.950 に答える