2014-01-17 3 views
1

Использование LENGTH в SQL. Вы можете ответить со ссылкой на следующий КТР QueryИспользование LENGTH в CTE

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

Заявление и длина как только имена столбцов заполнителя в вашем запросе. Есть ли что-то еще, что вы пытались спросить? –

ответ

0
WITH ShowMessage(STATEMENT, LENGTH) 

В этой части запроса вы назначили первое и второе имена столбцов. Длина - это просто псевдоним.

Это похоже на:

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

Не могли бы вы рассказать о вышеупомянутых функциях, потому что я хочу достичь аналогичного. Как это работает итеративно. –

+0

@PrakashVishwakarma Первая часть называется членом Anchor, часть после 'UNION ALL' является рекурсивным членом, ссылаясь на сам CTE. Для получения дополнительной информации вы можете начать здесь: http://technet.microsoft.com/en-us/library/ms186243(v=sql.105).aspx. – NickyvV

0

Есть 2 «стили» декларирования КТР - в отношении столбца имен/псевдонимов. Насколько мне известно, различия строго косметические;

------------------ 
-- Style 1 
-- Alias inside 
------------------ 
;WITH MyCTE AS 
(
    SELECT FirstName = fn 
      ,LastName = sn 
    FROM MyTable 
) 
... 
------------------ 
-- Style 2 
-- Alias outside 
------------------ 
;WITH MyCTE (FirstName, LastName) AS 
(
    SELECT fn 
      ,sn 
    FROM MyTable 
) 
... 
+0

Я узнал, что, увидев ответ @ Amirrezza –

+0

Хорошо для вас :) – MarkD

Смежные вопросы