Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro CTE:os tipos não correspondem entre a âncora e a parte recursiva


Exatamente o que diz:

'name1' tem um tipo de dados diferente para 'name' + CAST((rn+1) as varchar(255))

Tente isso (não testado)
;with cte as
(
select 1 as rn, CAST('name1' as varchar(259)) as nm
union all
select rn+1,nm = 'name' + CAST((rn+1) as varchar(255))
from cte a where rn<10)
select * from cte

Basicamente, você precisa garantir que o comprimento também corresponda. Para o bit recursivo, você pode ter que usar CAST('name' AS varchar(4)) se falhar novamente