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

Откуда:
Сообщений: 7
Добрый день.
Подскажите, имеется число 00000-77867
SQL Server не может скастить такое число.
Select Cast ('00000-77867' AS Money)

Если минус поставить вначале, то такое выражение скастится. Но нужно именно что бы минус был по середине. Есть ли пути решения Может возможно написать какую - нибудь свою функцию? На том же .NET.
18 апр 15, 18:17    [17533673]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
да и никто другой не можте
Guest
Na_Zer_Ok,

какое же это число? строка из цифр и тире.
это формула с вычитанием или тире здесь как разделитель десятичной части?
18 апр 15, 19:09    [17533795]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Na_Zer_Ok
Если минус поставить вначале, то такое выражение скастится. Но нужно именно что бы минус был по середине.
Во что должно скаститься? Что должно получиться из этого, разность двух чисел?
18 апр 15, 19:13    [17533809]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
alexeyvg
Na_Zer_Ok
Если минус поставить вначале, то такое выражение скастится. Но нужно именно что бы минус был по середине.
Во что должно скаститься? Что должно получиться из этого, разность двух чисел?


это money, то есть:

денег не было, а потом еще взял в долг 77867
18 апр 15, 19:14    [17533812]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
Na_Zer_Ok
Member

Откуда:
Сообщений: 7
Извиняюсь.
Число вот такое:
Select CAST ('0.-1212312312' AS Money);
18 апр 15, 19:29    [17533860]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Na_Zer_Ok
Извиняюсь.
Число вот такое:
Select CAST ('0.-1212312312' AS Money);
Тот же вопрос - по каким правилам нужно делать конвертацию?
18 апр 15, 19:31    [17533863]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
Na_Zer_Ok
Member

Откуда:
Сообщений: 7
Число отрицательное. В сначала должно быть добавлинно N-е количество нулей.
18 апр 15, 19:31    [17533866]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
Na_Zer_Ok
Member

Откуда:
Сообщений: 7
Допустим округление до 5 знаков. И в начале 5 нулей.
18 апр 15, 19:32    [17533870]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Стесняюсь спросить...
А в какой школе так учат?
18 апр 15, 19:43    [17533894]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1839
Na_Zer_Ok,

Вас в школе по математике тоже так учили писать числа?
Вы путаете числа и выражения.
SQL умеет конвертировать числа и умеет считать выражения.
Но как и все нормальные языки он арифметические выражения считает если все операнды числовые.
Для него ваши '00000-77867' и '0.-1212312312' это строки.
Если вы хотите чтобы в 1 и во 2 случае он произвел вычитание распарсте строку на два числовых операнда и проведите вычисление.
А добавление 5 нулей вначале это уже форматирование представления числа на клиенте.
Опять же вы путаете тип данных и представление данных. Числа должны хранится в числовых типах а не строках. Если вам надо 5 нулей вначале, то не нужно их хранить, нужно их только отображать при форматировании.
Для форматирования воспользуйтесь https://msdn.microsoft.com/ru-ru/library/hh213505.aspx
18 апр 15, 19:44    [17533899]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типа  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
iap
Стесняюсь спросить...
А в какой школе так учат?


видимо новая какая-то школа
18 апр 15, 21:18    [17534149]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить