SQL Server усекает значения целого числа в плавающем поле при приведении к CHAR - PullRequest
0 голосов
/ 27 февраля 2019

У меня довольно странная проблема.

Из-за выбора одного столбца в большом запросе как из столбцов FLOAT, так и CHAR я преобразую результирующие значения FLOAT в CHAR, чтобытипы данных для получающегося в результате запроса совпадают.

Для меньшинства значений целых чисел в столбце FLOAT оно усекает целое число до научной нотации, которая теряет одно целое число.

Пример

DECLARE @fl FLOAT
SET @fl = 1041931

SELECT CAST(ISNULL(@fl, '0') AS VARCHAR(20))

Это отображает

1.04193+e006

Что при расширении составляет 1041930, следовательно, теряется последняя цифра.

Что я делаю неправильно, чтобы отображать целые числаправильно?Этого не происходит для FLOATS с десятичными знаками.

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете попробовать следующий запрос.

DECLARE @fl FLOAT
SET @fl = 1041931
SELECT CAST(CAST(ISNULL(@fl, '0') AS DECIMAL(10,0)) AS VARCHAR(10)) 
...