下面的cte有什么问题

时间:2011-02-16 13:17:02

标签: sql-server-2005

我有

;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

错误

消息240,级别16,状态1,第1行 锚和递归查询“cte”列“name”中的递归部分之间的类型不匹配。

1 个答案:

答案 0 :(得分:1)

尝试类似

的内容
;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

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