CTE error: "Types don't match between the anchor and the recursive part"
common-table-expression, sql, sql-server, t-sql
Solution
Exactly what it says:
`'name1'` has a different data type to `'name' + CAST((rn+1) as varchar(255))`
Try this (untested)
;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
Basically, you have to ensure the length matches too. For the recursive bit, you may have to use `CAST('name' AS varchar(4))` if it fails again
Problem
I am executing the following statement: ``` ;WITH cte AS ( SELECT 1 as rn, 'name1' as nm UNION ALL SELECT rn + 1, nm = 'name' + CAST((rn + 1) as varchar(255)) FROM cte a WHERE rn < 10) SELECT * FROM cte ``` ...which finishes with the error... ``` Msg 240, Level 16, State 1, Line 2 Types don't match between the anchor and the recursive part in column "nm" of recursive query "cte". ``` Where am I making the mistake?