2013-11-06 3 views
1

У меня есть десятичное поле, и когда я конвертирую строку «1000,00» в десятичную на моей машине с SQL Server в португальском, она сохраняет правильно 1000, но на сервере, где ОС находится на английском языке, он сохраняет 100000.Установка десятичного числа в SQL Server

Я уже установил региональные настройки на португальский язык и сопоставление базы данных с Latin1_General_CI_AS.

Что я не сделал на сервере?

+1

Это потому, что у вас есть запятая, а не период. В английском языке период используется для указания целого числа из дробной части числа. Таким образом, строка '1000,00' будет конвертироваться в 1000. – Linger

+0

Вы бы сделали это, выбрав, например, Management Studio и сообщите результат:' select @@ language' – Alireza

ответ

1

Вы должны перенести его между компьютерами как decimal (или другой подходящий тип номера), и сохранить его как числовой тип, если это возможно, а не string. Если вам вообще нужно использовать string, используйте invariant culture, где это необходимо, чтобы преобразовать в тип номера и от него, чтобы избежать ошибок локали, подобных этому.

Короче говоря, культура сервера никогда не должна вступать в игру: вы должны исправить ее.

+0

Я использовал инвариантную культуру, и это сработало, спасибо. Convert.ToDecimal (доблесть, новая CultureInfo («pt-BR»)); –

Смежные вопросы