2010-12-15 11 views
2

J'essaie de convertir une valeur NVARCHAR en valeur monétaire avec MsSQL.Convertir NVARCHAR en valeur monétaire

Je sais que je peux utiliser quelque chose comme:

SELECT CONVERT(money, ValueColumn) FROM SomeTable 

Mais le problème est quand j'ai une valeur 4352,50, et j'appelle la méthode de conversion, la valeur devient 435250,00

Qu'est-ce que Ai-je disparu? J'ai aussi essayé CONVERT (money, ValueColumn, 2) mais sans succès.

Merci d'avance!

+0

Indiquez dans quel environnement vous travaillez. Pour moi vivant dans un, comme séparateur décimal. Sélectionner affiche tous les numéros erronés, c'est-à-dire modifiés NLS. Pour moi ce serait parfaitement OK. Je m'attendrais. comme séparateur décimal (je suis programmeur et aucun homme d'affaires) et le résultat être affiché avec décimal-,. Pour éviter ces NLS-Disturbances, j'utilise select cast (CONVERT (money, '1.1') comme varchar) pour obtenir la représentation interne –

Répondre

2

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

+0

Merci c'est ça: D – CyberK

1

Essayez

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) 

La virgule n'est pas intepreted comme point décimal.

+0

Ok mais comment puis-je l'utiliser dans une requête sans coder en dur les valeurs? Parce que c'est une table avec 160.000 lignes ... – CyberK

+1

Vous devrez d'abord utiliser un remplacement sur les colonnes. Quelque chose comme * REPLACE (@ValueColumn, ',', '.') * –

0

C'est un peu un hack mais si le reste de vos données est le même format

par exemple 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

Comme vous travaillez, - AS- décimal-séparateur utiliser ceci:

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

CHOISISSEZ TRY_PARSE ('12 .345,67 'AS Money en utilisant' pt-BR ')

Questions connexes