2015-07-11 3 views
0

У меня есть таблица с именем Product. Таблица выглядит следующим образом:Как преобразовать десятичную в научную в SQL Server 2008 R2

ID Product   Volume 
1  xyz  4654.000000000000000 
2  abc  121.000000000000000 

Я хочу представить Volume в научной нотации. Volume имеет тип данных decimal(20,8).

Как это сделать?

+0

Я бы предложил сделать это в слое презентации. Предполагая, что у вас есть та, которая есть! – Charleh

ответ

1

Обычно, форматирование и представление данных должно быть сделано UI, на стороне клиента, но если вы настаиваете ...

DECLARE @t decimal(20,8) = 4654.000000000000000; 
SELECT @t, CONVERT(nvarchar(32), CAST(@t as float), 2) 

результат

4654.00000000 4.654000000000000e+003 

Первый CASTdecimal до float (обратите внимание, что он может потерять точность), затем CONVERTfloat до nvarchar с использованием стиля 2:

Всегда 16 цифр. Всегда используйте в научной нотации.

Примечание

float типа имеет только 15 цифр точности, поэтому он не может хранить decimal(20,8) без потери точности.

0
declare @t decimal(20,8)=132423423421.00000000 
print cast(@t as float) 

вы можете указать объемное поле, чтобы плавать в инструкции выбора, а затем получите научную нотацию, как показано выше.

+0

Я попробовал. он просто удаляет 0 после десятичной точки и показывает мне результат. Если бы я понял вас правильно, вы хотели сказать, что я должен использовать: Выберите cast (float, volume) как Volume from Product? –

+0

Да, вы правильно поняли, но можете ли вы сообщить мне в соответствии с вашим требованием, что должно быть из 4654.000000000000000 и 121.000000000000000? –

+0

Я только хочу, чтобы те были показаны в научной нотации. В качестве примера это должно выглядеть так: 8.71597853672E + 001 –

Смежные вопросы