Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 numeric(15,5) к numeric(3,5)  [new]
Тэй
Member

Откуда:
Сообщений: 79
Здравствуйте, возникла такая проблема!
при создании таблиц базы многие столбцы задавались однотипно - все дробные числа - decimal(15,5) или numeric(15,5), а строковые все varchar и т.д.

Хочу уменьшить ненужную точность, например, столбец, транящий время отработки веб сервисов (на них таймаут 15 сек)

к сожалению, все попытки преобразований приводили к одной и той же ошибке
автор
Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.


если кто поможет, буду очень благодарна!
7 мар 14, 11:03    [15687273]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Тэй
numeric(3,5)


???

The scale must be less than or equal to the precision.
7 мар 14, 11:05    [15687293]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Тэй
все попытки преобразований

И вы покажите эти попытки ?
7 мар 14, 11:06    [15687305]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Тэй
Member

Откуда:
Сообщений: 79
Glory,

да запросто

cast(Search1c as numeric(5,5))

CONVERT(numeric (5,5), SearchPrice)

и так cast(RTRIM(LTRIM(CONVERT(varchar(50), Search1c))) as numeric (5,5))

и даже так CAST(ROUND(SearchPrice, 0) as numeric (5,5)) + CAST( SearchPrice%1 as numeric (5,5))
7 мар 14, 11:13    [15687358]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Glory,

Вы как-то прихвастнули насчет своего таланта создавать тип поля numeric(3,5), а во-вторых размерности нового поля недостаточно для вставки старых значений.
7 мар 14, 11:13    [15687359]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Тэй
Member

Откуда:
Сообщений: 79
Knyazev Alexey,
ок, даже к numeric(5,5) не приводится
7 мар 14, 11:14    [15687364]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Тэй, сделайте select max() и посмотрите - сколько же Вам надо на самом деле.
7 мар 14, 11:15    [15687370]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Тэй
Member

Откуда:
Сообщений: 79
Владислав Колосов,

три столбца, в них максимальные значения:
80.98763
68.73093
146.30037
7 мар 14, 11:18    [15687408]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Тэй
Knyazev Alexey,
ок, даже к numeric(5,5) не приводится


значит есть значения, которые нельзя сконвертировать из-за размерности
7 мар 14, 11:18    [15687410]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Тэй
Владислав Колосов,

три столбца, в них максимальные значения:
80.98763
68.73093
146.30037


и как вы их собрались конвертировать в decimal(5,5)!? Вы вообще в курсе, что означают цифры у типов numeric/decimal?
7 мар 14, 11:19    [15687416]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Тэй
Member

Откуда:
Сообщений: 79
Knyazev Alexey,

а где я про decimal?

ну видимо не в курсе, просвятите.
7 мар 14, 11:22    [15687435]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Тэй
а где я про decimal?

decimal = numeric, об этом в Хелпе написано...

Тэй
ну видимо не в курсе, просвятите.


в том же Хелпе: http://msdn.microsoft.com/ru-ru/library/ms187746.aspx
7 мар 14, 11:24    [15687447]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Тэй
Member

Откуда:
Сообщений: 79
Knyazev Alexey,

то есть для числа 123.456 это numeric(6, 3)? я верно понимаю?
7 мар 14, 11:26    [15687477]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Тэй
то есть для числа 123.456 это numeric(6, 3)? я верно понимаю?

минимально допустимый
7 мар 14, 11:28    [15687492]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Тэй
Member

Откуда:
Сообщений: 79
Knyazev Alexey,

да, действительно cast(Search1c as numeric (8,5)) работает. почему то была уверенность, что число слева в объявлении нумерика - это число знаков до запятой. Спасибо, буду знать
7 мар 14, 11:29    [15687500]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Имейте в виду, что количество байт, которое физически занимает та или иная размерность может не соответствовать заявленной размерности. Например, numeric c 10 по 15 займет 9 байт, а с 1 по 9 - 5 байт. Количество занимаемого полем места (length) можно посмотреть, например, с помощью sp_help ваша_таблица. Поэтому, если хотите экономии места, то нет разницы - закажете ли Вы точность 8 или 9.
7 мар 14, 11:50    [15687642]     Ответить | Цитировать Сообщить модератору
 Re: numeric(15,5) к numeric(3,5)  [new]
Тэй
Member

Откуда:
Сообщений: 79
Владислав Колосов
Имейте в виду, что количество байт, которое физически занимает та или иная размерность может не соответствовать заявленной размерности. Например, numeric c 10 по 15 займет 9 байт, а с 1 по 9 - 5 байт. Количество занимаемого полем места (length) можно посмотреть, например, с помощью sp_help ваша_таблица. Поэтому, если хотите экономии места, то нет разницы - закажете ли Вы точность 8 или 9.


спасибо, проверила, очень наглядно)
7 мар 14, 16:08    [15689490]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить