SQL - вернуть все значения с плавающей точкой в ​​поле без записи в научной записи - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть столбец с чрезвычайно большим набором значений (> 21 КБ), с неопределенным количеством десятичных разрядов, некоторые примеры данных (FLOAT), которые существуют:

6.46
0.784
8.05
86.4
2.64
0
2.14
1E-06
14.81
3.45
0.87243
0
1.12279
0
21.41
0.6243

Я хотел бы вернутьвсе значения, как показано, за исключением "1E-06", должны быть .000001;кроме того, любая научная запись должна быть в чисто десятичном формате.

Я пытался написать какой-то оператор CASE, в котором за THEN следует "CONVERT (varchar (100), CAST (@testFloat AS").десятичное число (38, x ))) "где x - количество сиг-фиг, но я не смог получить правильное условие для выражения WHEN, вот моя лучшая попытка:

CASE
    WHEN @testFloat = 0 THEN @testFloat
    WHEN FLOOR(@testFloat*10) != @testFloat*10 THEN CONVERT(varchar(100), CAST(@testFloat AS decimal(38,2)))
    WHEN FLOOR(@testFloat*100) != @testFloat*100 THEN CONVERT(varchar(100), CAST(@testFloat AS decimal(38,3)))
    *etc*
END

Уверен, я даже не на правильном пути ....

1 Ответ

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

Комментарий Джероена был полезен и дал мне выражение, дающее мне желаемый результат:

select FORMAT([sampleField], '0.' + REPLICATE('#', 308))

Где, я думаю, мне просто нужно понизить '308' до числа, которое представляет самый высокий уровеньточности видно в наших процессах.Спасибо, Йерун, за это решение!

...