Tsql T-sqlcte递归

Tsql T-sqlcte递归,tsql,Tsql,我只想让它回来 1. 二, 为什么这不起作用。CTE会将1和2打印为行。这就是你想要的吗 WITH CTE1 AS ( select 1 as value UNION ALL select value=value+1 FROM CTe1 WHERE value < 2 ) select * from cte1 CTE将1和2打印为行。这就是你想要的吗 WITH CTE1 AS ( select 1 as value UNION

我只想让它回来 1. 二,


为什么这不起作用。

CTE会将1和2打印为行。这就是你想要的吗

WITH 
CTE1 AS
(
    select 1 as value
    UNION ALL
    select value=value+1
    FROM CTe1
    WHERE value < 2
)
select * from cte1

CTE将1和2打印为行。这就是你想要的吗

WITH 
CTE1 AS
(
    select 1 as value
    UNION ALL
    select value=value+1
    FROM CTe1
    WHERE value < 2
)
select * from cte1

以下内容将打印出1、2:


问题是没有为第一个CTE子句定义值。我猜你想要1。然后第二个CTE条款自引用第一个条款并添加1。

以下内容将打印出1,2:


问题是没有为第一个CTE子句定义值。我猜你想要1。然后,第二个CTE子句自引用第一个CTE子句并添加1。

下面是一段代码,用于在字符串中搜索字符mach,谢谢大家

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;

这是一个搜索字符串中字符的代码,谢谢大家

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;

请联机阅读有关CTE语法的书籍。请联机阅读有关CTE语法的书籍。非常奇怪我在使用1作为值之前尝试了values=1?非常奇怪我在使用1作为值之前尝试了values=1?