2010-12-15 3 views
2

Я пытаюсь преобразовать значение NVARCHAR в денежную стоимость с помощью MsSQL.Преобразование NVARCHAR в денежную стоимость

Я знаю, что могу использовать что-то вроде:

SELECT CONVERT(money, ValueColumn) FROM SomeTable 

Но проблема в том, когда у меня есть значение 4352,50, и я называю метод преобразования, значение становится 435250,00

Что я пропал без вести? Я также попробовал CONVERT (деньги, ValueColumn, 2), но без каких-либо успехов.

Заранее благодарен!

+0

Пожалуйста, сообщите, в каком языке вы работаете. Для меня, живущего в a, как десятичная разделительная земля. Выбор отображает все неправильные номера, т. Е. Изменен NLS. Для меня все будет в порядке. Я бы ожидал. как десятичный разделитель (я программист и не деловой человек), и результат будет отображаться с десятичной запятой. Чтобы предотвратить эти NLS-нарушения, я использую select cast (CONVERT (money, '1.1') как varchar), чтобы получить внутреннее представление – 2010-12-15 09:39:25

ответ

2

SELECT CONVERT(money, REPLACE('4352,50', ',', '.'))

1

Попробуйте

DECLARE @ValueColumn NVARCHAR(20) 

SELECT @ValueColumn = '4352.50' 

SELECT CONVERT(money, @ValueColumn) 

VS

DECLARE @ValueColumn NVARCHAR(20) 

SELECT @ValueColumn = '4352,50' 

SELECT CONVERT(money, @ValueColumn) 

Запятая не intepreted в качестве десятичной точки.

+0

Хорошо, но как я могу использовать его в запросе без жесткого кодирования значений? Потому что это таблица с 160 000 строк ... – CyberK 2010-12-15 09:14:54

+1

Сначала вам понадобится заменить на столбцы. Что-то вроде * REPLACE (@ValueColumn, ',', '.') * – 2010-12-15 09:16:56

0

Это немного рубить, но если остальная часть ваших данных и тот же формат

например numbers , numbers ,

Declare @Value nvarchar(50) 

Set @Value = '4352,50,' 

Select Convert(Money, Substring(@Value, 0, Charindex(',',@value)) + '.' + Substring(@Value, Charindex(',',@Value)+1, 2)) 
2

Как вы работаете, - как- десятичный разделитель использовать это:

SELECT CONVERT(money, REPLACE(ValueColumn, ',', '.')) 
0

SELECT TRY_PARSE ('12 .345,67 'AS Money USING' pt-BR ')

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