Sql server 2005 下面的cte有什么问题

Sql server 2005 下面的cte有什么问题,sql-server-2005,Sql Server 2005,我有 错误 Msg 240,16级,状态1,第1行 递归查询cte列名中的锚和递归部分之间的类型不匹配。请尝试类似的操作 ;with cte as ( select rn=1, name = CAST('name'as varchar(50)) union all select rn+1, CAST(name as varchar(50))+ CAST( (rn+1) as varchar(50)) from cte where rn<100) select * from cte 您必

我有

错误

Msg 240,16级,状态1,第1行 递归查询cte列名中的锚和递归部分之间的类型不匹配。

请尝试类似的操作

;with cte as
(
select rn=1, name = CAST('name'as varchar(50))
union all
select rn+1, CAST(name as varchar(50))+ CAST( (rn+1) as varchar(50))
from cte where rn<100)

select * from cte

您必须记住,锚点和递归部分中的所有字段都必须是相同的类型。这也适用于varchar字段。

锚定和递归部分的数据类型长度也应该匹配是吗?当您转换递归部分中的两个部分时,这将允许100个字符,而锚定只允许50个字符
;with cte as
(
select  rn=1, 
        name = CAST('name'as varchar(100))
union all
select  rn+1, 
        CAST(name as varchar(50))+ CAST( (rn+1) as varchar(50))
from cte where rn<100)

select * from cte