Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SELECT CAST(2777777777770.00 / 0.00001 AS MONEY)  [new]
BusyMan
Member

Откуда: Москва
Сообщений: 4927
SELECT CAST(2777777777770.00 / 0.00001 AS MONEY)

Msg 8115, Level 16, State 4, Line 2
Arithmetic overflow error converting numeric to data type money.

Какой функцией можно проверить что результат выражения укладывается в допустимые рамки MONEY?
17 июл 09, 00:39    [7426885]     Ответить | Цитировать Сообщить модератору
 Re: SELECT CAST(2777777777770.00 / 0.00001 AS MONEY)  [new]
Dim Grishin
Member

Откуда: Florida, US
Сообщений: 547
money
От -922 337 203 685 477,5808 до 922 337 203 685 477,5807
-----------

используй CASE

SELECT CASE WHEN A/B>922 337 203 685 477 THEN 0 ELSE CAST(A/B AS MONEY)
17 июл 09, 01:11    [7426932]     Ответить | Цитировать Сообщить модератору
 Re: SELECT CAST(2777777777770.00 / 0.00001 AS MONEY)  [new]
Dim Grishin
Member

Откуда: Florida, US
Сообщений: 547
END =)
17 июл 09, 01:11    [7426934]     Ответить | Цитировать Сообщить модератору
 Re: SELECT CAST(2777777777770.00 / 0.00001 AS MONEY)  [new]
BusyMan
Member

Откуда: Москва
Сообщений: 4927
Dim Grishin
money
От -922 337 203 685 477,5808 до 922 337 203 685 477,5807
-----------

используй CASE

SELECT CASE WHEN A/B>922 337 203 685 477 THEN 0 ELSE CAST(A/B AS MONEY)

так и сделал...
но...

может есть более модная штука...?
я имею в виду нечто типа ISMONEY по аналогии с ISNUMERIC
мало ли
17 июл 09, 02:21    [7427004]     Ответить | Цитировать Сообщить модератору
 Re: SELECT CAST(2777777777770.00 / 0.00001 AS MONEY)  [new]
Ох...ий программизд
Guest
BusyMan
[quot Dim Grishin]...по аналогии с ISNUMERIC...

Что-то я не понял, как вам для проверки попадания в диапазон типа, например int, поможет функция isnumeric?
Тип int от -2 147 483 648 до 2 147 483 647. Как вы считаете, что вернет такой запрос:
select isnumeric(99999999999999999999999999999999999999) ?
а такой?
select isnumeric('99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999')
17 июл 09, 06:50    [7427069]     Ответить | Цитировать Сообщить модератору
 Re: SELECT CAST(2777777777770.00 / 0.00001 AS MONEY)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31177
Ох...ий программизд
Что-то я не понял, как вам для проверки попадания в диапазон типа, например int, поможет функция isnumeric?
Тип int от -2 147 483 648 до 2 147 483 647. Как вы считаете, что вернет такой запрос:
select isnumeric(99999999999999999999999999999999999999) ?
а такой?
select isnumeric('99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999')
Человек спросил, нет-ли функции для конкретного типа.

В мс могли-бы, конечно, опциональный параметр с именем типа добавить в isnumeric.
Типа select isnumeric(2777777777770.00 / 0.00001, money)

Но сейчас такого нету :-(
17 июл 09, 08:20    [7427150]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить