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

Откуда: Санкт-Петербург
Сообщений: 38
Добрый день!
Совсем недавно столкнулся с SQL Server.
Возникла следующая проблема:
Мое ПО пишет в базу данных SQL значения "0,2" типа nvarchar. Мне необходимо преобразовать данные значение в тип real для того что бы работал математический фильтр данного по. Стандартное изменение типа данных по столбцу выдает ошибку "Ошибка при преобразовании типа данных nvarchar к real." Возможно ли решить данную проблему через функцию convert? Какие еще есть решение данной проблемы?
Заранее спасибо!
25 фев 13, 12:37    [13975823]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Cosmosila
Возможно ли решить данную проблему через функцию convert? Какие еще есть решение данной проблемы?

десятичным разделителем в TSQL является точка и только точка.
25 фев 13, 12:39    [13975835]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Cosmosila
Мое ПО пишет в базу данных SQL значения "0,2" типа nvarchar.

А не проще ли сразу писать в БД с типом real, без необходимости дальнейших преобразований?..
25 фев 13, 12:43    [13975881]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Cosmosila
Member

Откуда: Санкт-Петербург
Сообщений: 38
Мое ПО синхронизирует данные с модуля "А" в модуль "Б". Модуль "А" имеет свою базу данных, также он отображает все дробные значение через точку, к примеру "0.2" типом real. Модуль Б работает на базе SQL Server, но не принимает при синхронизации дробные значения через точку модуля A. Модуль "Б" принимает значения только через запятую к примеру "0,2" типом real.
По причине закрытого кода данных модулей решил попробовать обходной путь:
1) В модуле А все дробные значения делаю типом string, к примеру "0,2"
2) После синхронизации в модуле Б дробные значения становятся типом nvarchar в базе SQL
3) Преобразовать на SQL Server дробные значения,к примеру "0,2", типом nvarchar в тип real.
25 фев 13, 13:08    [13976106]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Cosmosila
Модуль "А" имеет свою базу данных, также он отображает все дробные значение через точку, к примеру "0.2" типом real. Модуль Б работает на базе SQL Server, но не принимает при синхронизации дробные значения через точку модуля A. Модуль "Б" принимает значения только через запятую к примеру "0,2" типом real.

То есть эти модули не умеют выдавать данные непосредственно с типом real, а только в текстовом виде?
Вообще похоже на различие региональных настроек у учёток, под которыми работают модуль А и модуль Б.
25 фев 13, 13:18    [13976192]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Cosmosila
Member

Откуда: Санкт-Петербург
Сообщений: 38
Гость333
Cosmosila
Модуль "А" имеет свою базу данных, также он отображает все дробные значение через точку, к примеру "0.2" типом real. Модуль Б работает на базе SQL Server, но не принимает при синхронизации дробные значения через точку модуля A. Модуль "Б" принимает значения только через запятую к примеру "0,2" типом real.

То есть эти модули не умеют выдавать данные непосредственно с типом real, а только в текстовом виде?
Вообще похоже на различие региональных настроек у учёток, под которыми работают модуль А и модуль Б.


Модуль А использует свою программную среду и базу данных, в нем данные типа real работают корректно. Но при передачи єтих данных в модуль Б на базе SQL єти данные становятся текстовыми. Для преобразования их в математические я меняю им на SQL Server тип с nvarchar на real. При целых значениях данный способ помогает, а при дробных выдает ошибку.
25 фев 13, 13:27    [13976288]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Cosmosila
Member

Откуда: Санкт-Петербург
Сообщений: 38
Cosmosila
Гость333
пропущено...

То есть эти модули не умеют выдавать данные непосредственно с типом real, а только в текстовом виде?
Вообще похоже на различие региональных настроек у учёток, под которыми работают модуль А и модуль Б.


Модуль А использует свою программную среду и базу данных, в нем данные типа real работают корректно. Но при передачи єтих данных в модуль Б на базе SQL єти данные становятся текстовыми. Для преобразования их в математические я меняю им на SQL Server тип с nvarchar на real. При целых значениях данный способ помогает, а при дробных выдает ошибку.


В интерфейсе модуля Б, дробные значения типа real можно задать только через запятую.
25 фев 13, 13:29    [13976304]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Cosmosila
В интерфейсе модуля Б, дробные значения типа real можно задать только через запятую.

Потому что в региональных настройках запятая задана в качестве десятичного разделитеоля ?
25 фев 13, 13:31    [13976322]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Cosmosila
Member

Откуда: Санкт-Петербург
Сообщений: 38
Glory
Cosmosila
В интерфейсе модуля Б, дробные значения типа real можно задать только через запятую.

Потому что в региональных настройках запятая задана в качестве десятичного разделитеоля ?


В модуле Б отсутствую региональные настройки, по стандарту все дробные значения идут с запятой...
25 фев 13, 13:39    [13976402]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Cosmosila
В модуле Б отсутствую региональные настройки,

Региональные настройки присутствуют у Windows. Причем могут быть разными у разных учетных записей.
25 фев 13, 13:40    [13976411]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Cosmosila
Member

Откуда: Санкт-Петербург
Сообщений: 38
Cosmosila
Glory
пропущено...

Потому что в региональных настройках запятая задана в качестве десятичного разделитеоля ?


В модуле Б отсутствую региональные настройки, по стандарту все дробные значения идут с запятой...


На SQL все данные Модуля Б представлены типами nvarchar, int, real, bit.
25 фев 13, 13:41    [13976425]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Cosmosila
Member

Откуда: Санкт-Петербург
Сообщений: 38
Glory
Cosmosila
В модуле Б отсутствую региональные настройки,

Региональные настройки присутствуют у Windows. Причем могут быть разными у разных учетных записей.


Удалось изменить в модуле Б представление дробных значений посредством "Региональных настроек". Большое спасибо за совет!
Приступаю к синхронизации, посмотрим что получиться)
25 фев 13, 14:01    [13976596]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов данных(nvchar->real)  [new]
Cosmosila
Member

Откуда: Санкт-Петербург
Сообщений: 38
После смены региональных настроек удалось передать корректно дробные значения в модуль Б типом real.
Всем спасибо за ответы!
25 фев 13, 19:11    [13979010]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить