T-sql CTE рекурсия - PullRequest
       28

T-sql CTE рекурсия

1 голос
/ 12 сентября 2011

Я просто хочу, чтобы он возвратил 1 2

WITH 
CTE1 AS
(
    select value
    UNION ALL
    select value=value+1
    FROM CTe1
    WHERE value =2
)

select * from cte1

почему это не работает.

Ответы [ 3 ]

3 голосов
/ 12 сентября 2011

Будет напечатано следующее 1, 2:

WITH 
CTE1 AS
(
    select 1 as value
    UNION ALL
    select value=value+1
    FROM CTe1
    WHERE value = 1
)

select * from cte1

Проблема заключалась в том, что value не было определено для вашего первого предложения CTE.Я предполагаю, что вы хотели 1. Затем второе предложение CTE ссылается на первое и добавляет 1.

1 голос
/ 12 сентября 2011

CTE напечатает 1 и 2 в виде строк.Это то, что вы ищете?

WITH 
CTE1 AS
(
    select 1 as value
    UNION ALL
    select value=value+1
    FROM CTe1
    WHERE value < 2
)
select * from cte1
0 голосов
/ 17 сентября 2011

вот код для поиска строки для символа mathh спасибо всем.

Begin
with recursiveCTE(matchNumber, foundAt) as (
  select 1, charindex(@toFind, @ToSearch, 0)
  union all
  select matchNumber + 1, charindex(@toFind, @ToSearch, foundAt + 1)
  from recursiveCTE where foundAt > 0
)
select
  matchNumber as "Match Number",
  (case when foundAt = 0 then null else foundAt end) as "Found At"
from recursiveCTE
where  foundAt  0 or matchNumber = 1
;

end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...