SQL Server 2008 - преобразование строки в int завершается неудачно - PullRequest
3 голосов
/ 25 августа 2011

Не знаю, почему это преобразование не удается.

SELECT CAST('32.999' AS INT)

выдает ошибку, говорящую

Сбой преобразования при преобразовании значения varchar '32 .000' в данные введите int.

Я знаю, что могу преобразовать его в Decimal, а затем преобразовать в Int, но почему 32.000 не конвертируется в Int напрямую?

Я что-то здесь упускаю?

- EDIT -

Мне нет дела до десятичных знаков. Я хочу, чтобы SQL их игнорировал.

Ответы [ 2 ]

6 голосов
/ 25 августа 2011

32.000 не могут быть точно представлены как int из-за десятичных разрядов.Вместо этого, если вам нужно числовое значение с десятичными знаками, вы можете использовать тип данных с плавающей запятой (или числовой).

Select CAST('32.000' as float)

edit: немного неправильно прочитал ваш вопрос.

I'mПредполагая, что SQL пытается, лучше сохранить свои намерения.Когда он читает, что числовое значение, которое вы пытаетесь привести, имеет десятичные значения, оно отклоняется.

1 голос
/ 25 августа 2011

используется SELECT CAST(ROUND('32.999',0,1) AS INT) и работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...