SQL Server 2005: сбой при преобразовании значения varchar '1.23E-4' в десятичное - PullRequest
9 голосов
/ 27 января 2010
declare @a varchar(40)
set @a='1.23e-4'
declare @b decimal(27,12)

if isnumeric(@a) =1
begin

    select @b=cast(@a as decimal(27,12))

end
else
begin
    select @b=-1
end

select @b

при выполнении кода выше SQL в среде SQL 2005 я получаю следующую ошибку.

Ошибка преобразования типа данных varchar в числовой

кто-нибудь знает почему?

спасибо.

Ответы [ 2 ]

10 голосов
/ 27 января 2010
SELECT  @b = CONVERT(REAL, @a, 2)

Научная запись работает только на FLOAT и REAL.

1 голос
/ 27 января 2010

разыгрывается первым с помощью float.

SQL довольно строг в отношении десятичного числа

например

SELECT CAST('' AS float), CAST('' AS int), CAST('' AS float) --0
SELECT CAST('' AS decimal) --error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...