Это кажется довольно простым ... Что вы сами пробовали?
Прежде всего: если эти значения являются (целыми) числами, вы не должны хранить их в строковом столбце.Любой код может легко сломаться, если среди них есть нечисловые значения ...
Вы можете попробовать это:
DECLARE @mockup TABLE(ID INT IDENTITY,YourValue VARCHAR(100))
INSERT INTO @mockup VALUES('50'),('100'),('1000'),('9999'),('20000');
SELECT *
,CAST(YourValue AS DECIMAL(10,3))/1000 AS NewValue
,FORMAT(CAST(YourValue AS DECIMAL(10,3))/1000,'000.000') AS Formatted
FROM @mockup
Приведение строки типа "1000"
к DECIMAL
будетполучить номер обратно.Это число можно разделить на 1000, чтобы получить необходимое значение.
Если вам нужен формат в соответствии с предоставлением, вы можете использовать FORMAT()
в SQL-Server 2012+, но эта функция известна как довольно медленная.Если это важно для вас, ищите другие способы форматирования числа.Здесь много примеров на SO ...