SQL Server 2008 varchar в десятичном виде приводит к: «Ошибка преобразования типа данных varchar в числовой» - PullRequest
1 голос
/ 04 октября 2011

Я пытаюсь сохранить значение, хранящееся в виде varchar, в десятичном поле.

Все следующие примеры приводят к: «Ошибка преобразования типа данных varchar в числовой.»

что мне здесь не хватает?

SELECT CONVERT(decimal(11,2), '6.999,50') 
SELECT CONVERT(decimal(11, 2), '6.999,50')
SELECT CAST('6.999,50' AS decimal) / 100.0
SELECT CAST((CAST('6.999,50' AS decimal) / 100000) AS decimal(17,5))

Ответы [ 2 ]

2 голосов
/ 04 октября 2011

Вам не хватает того факта, что 6.999,50 не является действительным десятичным числом.Вы не можете иметь запятую и десятичную точку в десятичном значении, конечно?Какой номер должен быть?

Предполагается, что ваша локаль указывает.как группировка и как десятичный разделитель: для удаления группирующих цифр:

SELECT CONVERT(decimal(11,2), REPLACE('6.999,50', '.', '')) 

даст 6999,50 в виде десятичного числа

0 голосов
/ 04 октября 2011

Я подозреваю, что это ваши настройки локали. Ваш язык использует запятую в качестве десятичной точки и точку в качестве разделителя. Ваш сервер sql, вероятно, настроен в качестве стандартного английского языка США, который используется наоборот, точка в виде десятичной точки, запятая в качестве разделителя.

...