Как конвертировать 119.305.1983984.1 в 1.1983984.305.119 на сервере sql?

Если проблема заключается в дополнительном времени компиляции и раздувании бинарного размера, полученном путем компиляции .h как части всех используемых им .cpp-модулей, во многих случаях то, что вы можете сделать, - это сделать класс шаблона опустившимся из не-шаблонного базовый класс для не зависящих от типа частей интерфейса, и что базовый класс может иметь свою реализацию в файле .cpp.

3
задан Sami 16 January 2019 в 11:19
поделиться

2 ответа

DECLARE @myvar varchar(17) = '119.305.1983984.1'; --It's 17 not 10

WITH CTE AS
(
SELECT Value, 
       ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) RN
FROM STRING_SPLIT(@myvar, '.')
)
SELECT STRING_AGG(Value, '.') WITHIN GROUP (ORDER BY RN DESC)
FROM CTE;

Возвращает:

+-------------------+
| 1.1983984.305.119 |
+-------------------+
0
ответ дан Sami 16 January 2019 в 11:19
поделиться

Если число токенов известно и не превышает четырех (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 [ 113]

SELECT возвращает: 1.1983984.305.119

<час>

Если количество токенов варьируется, а для SQL Server 2017+:

[111 ]

SELECT возвращает: 1.1983984.305.119

0
ответ дан Alexander Volok 16 January 2019 в 11:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: