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