我必须在 SQL Server 中将 119.305.1983984.1
转换为 1.1983984.305.119
。
我已经尝试使用 reverse
如下所示,但它不起作用
DECLARE @myvar varchar(20);
SET @myvar = '119.305.1983984.1';
SELECT REVERSE(@myvar) AS Reversed ;
GO
结果是1.4893891.503.911
预期结果是 1.1983984.305.119
我不想被颠倒。只希望最后显示:1.1983984.305.119
。
最佳答案
如果 token 数量已知且最多为四个(SQL Server 2012+):
DECLARE @myvar varchar(20);
SET @myvar = '119.305.1983984.1';
SELECT CONCAT(PARSENAME(@myvar,1),'.',PARSENAME(@myvar,2),'.',PARSENAME(@myvar,3),'.',PARSENAME(@myvar,4))
原值:119.305.1983984.1
SELECT 返回:1.1983984.305.119
如果 token 数量不同且 SQL Server 为 2017+:
DECLARE @myvar varchar(20), @separator CHAR(1)
SET @myvar = '119.305.1983984.1';
SET @separator = '.'
SELECT STRING_AGG(value, @separator) WITHIN GROUP ( ORDER BY rn DESC )
FROM (
SELECT value, ROW_NUMBER() OVER (ORDER BY (SELECT 0) ) rn
FROM STRING_SPLIT ( @myvar , @separator )
) d OPTION (MAXDOP 1)
SELECT 返回:1.1983984.305.119
关于sql - 如何在sql server中将119.305.1983984.1转换为1.1983984.305.119?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215310/