循环遍历值一次剥离 1 个字符

Kas*_*shi 11 sql-server sql-server-2012

我想遍历值并一次从值中去除 1 个字符并显示结果。

因此,如果我有一个带有值的表:

ID
___
34679
13390
89906
Run Code Online (Sandbox Code Playgroud)

我希望结果看起来像这样

Id
----
4679
679
79
9
3390
390
90
0
9906
906
06
6
Run Code Online (Sandbox Code Playgroud)

Aar*_*and 19

请不要对这样的事情使用循环(我还会为您对事物的控制较少的场景保留递归 CTE,例如层次结构)。SQL 中的循环很糟糕;SQL 被优化为在集合中工作。

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);
Run Code Online (Sandbox Code Playgroud)

结果:

9
79
679
4679
0
90
390
3390
6
06
906
9906
Run Code Online (Sandbox Code Playgroud)