Adi*_*Adi 2 sql-server sql-server-2012
因此,如果我有一个带有值的表:
ID
------
a1b2c3
ac2b31
db13a2
Run Code Online (Sandbox Code Playgroud)
我希望结果看起来像这样
Id
------
abc123
acb231
dba132
Run Code Online (Sandbox Code Playgroud)
换句话说,重新排列字符串,使所有字符首先出现,然后是所有数字。顺序不重要。
(我所说的无循环是指,没有传统的循环。我正在查看一些 CTE 示例,但无法在此处进行调整。)
在 SQL Server vNext 上,您可以利用该TRANSLATE功能来解决这个问题。该版本尚未向公众普遍提供,但有一天它可能有用或激发其他人的答案。
SELECT
REPLACE(TRANSLATE(@ID, '0123456789', SPACE(10)), ' ', '')
+ REPLACE(TRANSLATE(@ID, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', SPACE(52)), ' ', '');
Run Code Online (Sandbox Code Playgroud)
db fiddle 链接用于问题中的三个示例。
在 SQL Server 2012 上,您可以通过应用该REPLACE函数 62 次来解决您的问题,但可能有一个更优雅的解决方案:
DECLARE @T table
(
ID varchar(10) NOT NULL
);
INSERT @T
(ID)
VALUES
('a1b2c3'),
('ac2b31'),
('db13a2');
SELECT
-- Remove numerics
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
T.ID,
'0', ''), '1', ''), '2', ''), '3', ''), '4', ''),
'5', ''), '6', ''), '7', ''), '8', ''), '9', '')
+
-- Remove alphas
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
T.ID,
'a', ''), 'b', ''), 'c', ''), 'd', ''), 'e', ''), 'f', ''), 'g', ''),
'h', ''), 'i', ''), 'j', ''), 'k', ''), 'l', ''), 'm', ''), 'n', ''),
'o', ''), 'p', ''), 'q', ''), 'r', ''), 's', ''), 't', ''), 'u', ''),
'v', ''), 'w', ''), 'x', ''), 'y', ''), 'z', ''),
'A', ''), 'B', ''), 'C', ''), 'D', ''), 'E', ''), 'F', ''), 'G', ''),
'H', ''), 'I', ''), 'J', ''), 'K', ''), 'L', ''), 'M', ''), 'N', ''),
'O', ''), 'P', ''), 'Q', ''), 'R', ''), 'S', ''), 'T', ''), 'U', ''),
'V', ''), 'W', ''), 'X', ''), 'Y', ''), 'Z', '')
FROM @T AS T;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
775 次 |
| 最近记录: |