Преобразование varchar в десятичную - PullRequest
0 голосов
/ 03 декабря 2018

Как превратить приведенные ниже значения слева в значения в скобках?(SQL Server 2012)

50    (000.050)
100   (000.100)
1000  (001.000)
9999  (009.999)
20000 (020.000)

1 Ответ

0 голосов
/ 03 декабря 2018

Это кажется довольно простым ... Что вы сами пробовали?

Прежде всего: если эти значения являются (целыми) числами, вы не должны хранить их в строковом столбце.Любой код может легко сломаться, если среди них есть нечисловые значения ...

Вы можете попробовать это:

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 ...

...