Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Erreur CTE :les types ne correspondent pas entre l'ancre et la partie récursive

Exactement ce qu'il dit :

'name1' a un type de données différent de 'name' + CAST((rn+1) as varchar(255))

Essayez ceci (non testé)

;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

Fondamentalement, vous devez également vous assurer que la longueur correspond. Pour le bit récursif, vous devrez peut-être utiliser CAST('name' AS varchar(4)) s'il échoue à nouveau