Chính xác những gì nó nói:
'name1'
có kiểu dữ liệu khác với 'name' + CAST((rn+1) as varchar(255))
Hãy thử cái này (chưa được kiểm tra)
;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
Về cơ bản, bạn cũng phải đảm bảo độ dài phù hợp. Đối với bit đệ quy, bạn có thể phải sử dụng CAST('name' AS varchar(4))
nếu nó không thành công một lần nữa