Je veux parcourir les valeurs et supprimer un caractère à la fois des valeurs et afficher le résultat.
Donc, si j'ai une table avec des valeurs:
ID
___
34679
13390
89906
Je veux que le résultat ressemble à ceci
Id
----
4679
679
79
9
3390
390
90
0
9906
906
06
6
Veuillez ne pas utiliser de boucles pour des choses comme ça (je réserverais également des CTE récursifs pour les scénarios où vous avez beaucoup moins de contrôle sur les choses, comme les hiérarchies). Les boucles sont mauvaises en SQL; SQL est optimisé pour fonctionner en ensembles.
DECLARE @foo TABLE(ID INT);
INSERT @foo VALUES(34679),(13390),(89906);
;WITH x AS
(
SELECT TOP (2048) n = ROW_NUMBER() OVER (ORDER BY Number)
FROM master.dbo.spt_values ORDER BY Number
)
SELECT RIGHT(f.ID, x.n) FROM x
INNER JOIN @foo AS f
ON x.n < LEN(f.ID);
Résultats:
9
79
679
4679
0
90
390
3390
6
06
906
9906