sql >> Database teknologi >  >> RDS >> Sqlserver

CTE-fejl:Typerne matcher ikke mellem ankeret og den rekursive del

Præcis hvad der står:

'name1' har en anden datatype end 'name' + CAST((rn+1) as varchar(255))

Prøv dette (utestet)

;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

Dybest set skal du også sikre, at længden matcher. Til den rekursive bit skal du muligvis bruge CAST('name' AS varchar(4)) hvis det fejler igen



  1. MySQL oprette lagrede procedure syntaks med afgrænser

  2. Sådan fungerer COLLATION() i MariaDB

  3. Sådan forhindrer du SQL-injektionsangreb med Secure

  4. PHP + SQL Server - Hvordan indstilles tegnsæt til forbindelse?