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?
Exactly what it says:
'name1'has a different data type to'name' + CAST((rn+1) as varchar(255))Try this (untested)
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