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

Откуда:
Сообщений: 207
Здравствуйте, в Лист7 файла Сводная2 гружу данные из БД MS SQL через запрос,
не могу построить сводную тк столбец zv_value Лист3 имеет нечисловой формат

Пробую в исходном запросе сменить тип столбца zv_value следующим образом:
select cast (zv_value as numeric) from res

но запрос не выполняется выходит ошибка: Error converting data type varchar to numeric

Подскажите, пожалуйста, что не так с синтаксисом?

Спасибо.

К сообщению приложен файл (Сводная2_.xlsx - 15Kb) cкачать
29 окт 17, 13:25    [20910145]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
anvg
Member

Откуда: СПб
Сообщений: 101
Доброе время суток.
martinezo, у вас же число как текст с десятичной запятой вместо точки и пробел как разделитель разрядов. Поэтому лучше так
Select cast(replace(replace(N'1 015,234', N' ', N''), N',', N'.') As numeric(18,3)) As num

Успехов.
29 окт 17, 14:19    [20910250]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
martinezo
Member

Откуда:
Сообщений: 207
anvg, спасибо, попробую а только так можно решить это? можно как то сразу, преобразовать один формат в другой?
29 окт 17, 14:32    [20910267]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
martinezo
anvg, спасибо, попробую а только так можно решить это? можно как то сразу, преобразовать один формат в другой?
Не надо хранить числа как строки, и вообще преобразовывать не придется.
29 окт 17, 14:40    [20910278]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
anvg
Member

Откуда: СПб
Сообщений: 101
martinezo, базы данных - это не Excel, не предполагают хранение данных как попало. По умолчанию в них полагается, что разработчик чётко представляет зачем и почему у него такая структура таблицы (любимое пользователями - мне так удобно, тут карается проблемами). Поэтому фактически нет встроенных функций для преобразования. Convert, например, заточен для преобразования текста как даты. Для текста в национальном формате, увы, нет ничего.
29 окт 17, 17:17    [20910389]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
aleks222
Guest
anvg
Доброе время суток.
martinezo, у вас же число как текст с десятичной запятой вместо точки и пробел как разделитель разрядов. Поэтому лучше так
Select cast(replace(replace(N'1 015,234', N' ', N''), N',', N'.') As numeric(18,3)) As num

Успехов.


Нет. Брешешь.
Лучше в Excel назначить числовой формат на колонку.
30 окт 17, 08:06    [20910917]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
martinezo
Member

Откуда:
Сообщений: 207
anvg
Доброе время суток.
martinezo, у вас же число как текст с десятичной запятой вместо точки и пробел как разделитель разрядов. Поэтому лучше так
Select cast(replace(replace(N'1 015,234', N' ', N''), N',', N'.') As numeric(18,3)) As num

Успехов.


все-таки непонятно,
в моем запросе select cast (zv_value as numeric) from res я хочу изменить формат значений столбца zv_value
а в вашем запросе указано
Select cast(replace(replace(N'1 015,234', N' ', N''), N',', N'.') As numeric(18,3)) As num

непонятно, что такое N и как этот запрос увязать с со столбцом zv_value
30 окт 17, 09:42    [20911042]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
martinezo
Member

Откуда:
Сообщений: 207


Лучше в Excel назначить числовой формат на колонку.


пробовал и в самом эксель указать числовой формат для ячейки zv_value - все равно сводная не считается - см вложение.
Подскажите, пожалуйста, как все-таки можно построить сводную? Спасибо

К сообщению приложен файл (Сводная3.xlsx - 15Kb) cкачать
30 окт 17, 09:58    [20911084]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
aleks222
Guest
martinezo

Лучше в Excel назначить числовой формат на колонку.


пробовал и в самом эксель указать числовой формат для ячейки zv_value - все равно сводная не считается - см вложение.
Подскажите, пожалуйста, как все-таки можно построить сводную? Спасибо


Дык, числа то введи "как числа", а не "как строки".
30 окт 17, 10:19    [20911137]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
martinezo
Member

Откуда:
Сообщений: 207
aleks222
martinezo
пропущено...


пробовал и в самом эксель указать числовой формат для ячейки zv_value - все равно сводная не считается - см вложение.
Подскажите, пожалуйста, как все-таки можно построить сводную? Спасибо


Дык, числа то введи "как числа", а не "как строки".


выделил столбец и изменил формат на числовой, что еще нужно сделать?
30 окт 17, 10:51    [20911208]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
aleks222
Guest
martinezo
aleks222
пропущено...


Дык, числа то введи "как числа", а не "как строки".


выделил столбец и изменил формат на числовой, что еще нужно сделать?


Ну, ты зайди в ячейку и тупо поменяй нолик на нолик - ты увидишь.
30 окт 17, 10:57    [20911233]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
F
Guest
Удали проблемную колонку из сводной и снова вставь.
30 окт 17, 11:05    [20911247]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
martinezo
Member

Откуда:
Сообщений: 207
F
Удали проблемную колонку из сводной и снова вставь.


а если я в это таблицу снова буду подгружать данные, снова придется удалять проблемную колонку из сводной и снова вставлять?
хотелось бы эту проблему решить сразу
(БД не я проектировал - приходится работать с тем что есть)
30 окт 17, 11:36    [20911314]     Ответить | Цитировать Сообщить модератору
 Re: не получается перевести формат varchar в числовой  [new]
iiyama
Member

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

Если Вы хотите решить проблему, то числа должны быть числами, а строки - строками
Если Вы хотите быстро прилепить костыль, то делайте вычисляемое поле, где проверяете формат
Это в помощь:
1. Replace
2. Try_convert
30 окт 17, 12:44    [20911583]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить