Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Cosmosila Member Откуда: Санкт-Петербург Сообщений: 38 |
Добрый день! Совсем недавно столкнулся с SQL Server. Возникла следующая проблема: Мое ПО пишет в базу данных SQL значения "0,2" типа nvarchar. Мне необходимо преобразовать данные значение в тип real для того что бы работал математический фильтр данного по. Стандартное изменение типа данных по столбцу выдает ошибку "Ошибка при преобразовании типа данных nvarchar к real." Возможно ли решить данную проблему через функцию convert? Какие еще есть решение данной проблемы? Заранее спасибо! |
25 фев 13, 12:37 [13975823] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
десятичным разделителем в TSQL является точка и только точка. |
||
25 фев 13, 12:39 [13975835] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
А не проще ли сразу писать в БД с типом real, без необходимости дальнейших преобразований?.. |
||
25 фев 13, 12:43 [13975881] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
То есть эти модули не умеют выдавать данные непосредственно с типом real, а только в текстовом виде? Вообще похоже на различие региональных настроек у учёток, под которыми работают модуль А и модуль Б. |
||
25 фев 13, 13:18 [13976192] Ответить | Цитировать Сообщить модератору |
Cosmosila Member Откуда: Санкт-Петербург Сообщений: 38 |
Модуль А использует свою программную среду и базу данных, в нем данные типа real работают корректно. Но при передачи єтих данных в модуль Б на базе SQL єти данные становятся текстовыми. Для преобразования их в математические я меняю им на SQL Server тип с nvarchar на real. При целых значениях данный способ помогает, а при дробных выдает ошибку. |
||||
25 фев 13, 13:27 [13976288] Ответить | Цитировать Сообщить модератору |
Cosmosila Member Откуда: Санкт-Петербург Сообщений: 38 |
В интерфейсе модуля Б, дробные значения типа real можно задать только через запятую. |
||||
25 фев 13, 13:29 [13976304] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Потому что в региональных настройках запятая задана в качестве десятичного разделитеоля ? |
||
25 фев 13, 13:31 [13976322] Ответить | Цитировать Сообщить модератору |
Cosmosila Member Откуда: Санкт-Петербург Сообщений: 38 |
В модуле Б отсутствую региональные настройки, по стандарту все дробные значения идут с запятой... |
||||
25 фев 13, 13:39 [13976402] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Региональные настройки присутствуют у Windows. Причем могут быть разными у разных учетных записей. |
||
25 фев 13, 13:40 [13976411] Ответить | Цитировать Сообщить модератору |
Cosmosila Member Откуда: Санкт-Петербург Сообщений: 38 |
На SQL все данные Модуля Б представлены типами nvarchar, int, real, bit. |
||||
25 фев 13, 13:41 [13976425] Ответить | Цитировать Сообщить модератору |
Cosmosila Member Откуда: Санкт-Петербург Сообщений: 38 |
Удалось изменить в модуле Б представление дробных значений посредством "Региональных настроек". Большое спасибо за совет! Приступаю к синхронизации, посмотрим что получиться) |
||||
25 фев 13, 14:01 [13976596] Ответить | Цитировать Сообщить модератору |
Cosmosila Member Откуда: Санкт-Петербург Сообщений: 38 |
После смены региональных настроек удалось передать корректно дробные значения в модуль Б типом real. Всем спасибо за ответы! |
25 фев 13, 19:11 [13979010] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |