@Jacob
Thx
@diegoperdices
My data, result (first 10 and last 10) and stats:
INSERT INTO TC60(Categories)
select 'Computers/Apple/Macintosh' union all
select 'Food/Apple/Lobo' union all
select
'x' + cast((select cast('/' as varchar(max)) + replicate('a',1 + (tl.N/2 - abs(x.N - tl.N / 2)) * 4) + cast(tl.N + 1 as varchar(max)) + '_'+ cast(x.N + 1 as varchar(max))
from tsqlc_Tally x where x.N < tl.N + 2
for xml path('') ,type)
as varchar(max))
from tsqlc_Tally tl where tl.N < 100
1 Computers NULL
2 Food NULL
3 x NULL
4 Apple 1
5 Apple 2
6 a100_1 3
7 a10_1 3
8 a11_1 3
9 a12_1 3
10 a13_1 3
4998 aaaaa98_96 4896
4999 aaaaaaaaaaaaa99_96 4897
5000 aaaaaaaaa100_97 4898
5001 a97_97 4899
5002 a98_97 4900
5003 aaaaaaaaa99_97 4901
5004 aaaaa100_98 4902
5005 aaaaa99_98 4903
5006 a100_99 4904
5007 a99_99 4905
(5007 row(s) affected)
Table 'Worktable'. Scan count 2, logical reads 30452, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'TC60'. Scan count 1, logical reads 39, physical reads 0, read-ahead reads 0, lob logical reads 192, lob physical reads 0, lob read-ahead reads 144.
SQL Server Execution Times:
CPU time = 4719 ms, elapsed time = 5496 ms.