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)
| 归档时间: |
|
| 查看次数: |
20953 次 |
| 最近记录: |