# SQL - Konvertierung von VARCHAR zu NUMERIC



## Indyyan (26. Juli 2004)

*Kommt mir vor wie ein BUG - SQL*

Hallo

Habe eine Tabelle in der ich einige Felder in von VARCHAR zu NUMERIC umwandeln will, nur bekomm ich leider eine Fehlermeldung wenn ich dies versuche.

Hab daraufhin versucht mittels Query die numerischen und nicht numerischen Werte anzuzeigen:


```
SELECT Utb_S_ FROM TV_Order WHERE isnumeric(Utb_S_) = 0
```

fuer die nicht numerischen Werte, welche folgendermassen aussschauen:
96,41379310344820000
86,25705601389490000
94,51111111111110000


```
SELECT Utb_S_ FROM TV_Order WHERE isnumeric(Utb_S_) = 1
```

fuer die numerischen Werte:
77,53086419753
187
0,0


Warum kann ich die nicht-numerischen Werte nicht Konvertieren bzw. warum sind diese ueberhaupt nicht numerisch

Danke fuer die Hilfe

Jan


----------



## melmager (26. Juli 2004)

Hmmm
ich stelle mal die wilde Vermutung auf das du einmal ein Punkt und einmal ein Komma als
Kommatrennzeichen hast 

Kontrollier das doch mal bitte nach


----------



## Indyyan (27. Juli 2004)

*Kommt mir vor wie ein BUG*

Nein dem ist nicht so ich habe nur Komma und das eigenartige ist, das wenn ich diesen Test mache bekomm ich fuer die roten eien Fehler bei den anderen ist es kein Problem

Kommt mir vor wie ein Bug


SELECT '1', IsNumeric('1')
UNION ALL SELECT 'XXXX', IsNumeric('XXXX') 
UNION ALL SELECT '96.41379310344820000', IsNumeric('96.41379310344820000')
UNION ALL SELECT '74.90909090909', IsNumeric('74.90909090909')
UNION ALL SELECT '96,41379310344820000', IsNumeric('96,41379310344820000') 
UNION ALL SELECT '74,90909090909', IsNumeric('74,90909090909')
UNION ALL SELECT '1,2', IsNumeric('1,2')
UNION ALL SELECT '1,23', IsNumeric('1,23')
UNION ALL SELECT '1,234', IsNumeric('1,234')
UNION ALL SELECT '1,2345', IsNumeric('1,2345')
UNION ALL SELECT '1,23456', IsNumeric('1,23456')
UNION ALL SELECT '1,234567', IsNumeric('1,234567')
UNION ALL SELECT '1,2345678', IsNumeric('1,2345678')
UNION ALL SELECT '1,23456789', IsNumeric('1,23456789')
UNION ALL SELECT '1,234567890', IsNumeric('1,234567890')
UNION ALL SELECT '1,2345678901', IsNumeric('1,2345678901')
UNION ALL SELECT '1,23456789012', IsNumeric('1,23456789012')
UNION ALL SELECT '1,234567890123', IsNumeric('1,234567890123')
UNION ALL SELECT '1,2345678901234', IsNumeric('1,2345678901234')
UNION ALL SELECT '1,23456789012345', IsNumeric('1,23456789012345')
UNION ALL SELECT '1,234567890123456', IsNumeric('1,234567890123456') 
UNION ALL SELECT '1,2345678901234567', IsNumeric('1,2345678901234567')

Weiss vielleicht jemand wie ich Komma gegen Punkt bei 4 Spalten meiner Tabelle verändern kann aber die anderen unverändert lassen.
Dann könnt ich diese veränderte Tabelle im Query analyser als csv exportieren und neu importieren...

oder hat jemand eine andere idee?


----------



## vop (27. Juli 2004)

Vielleicht sind es zu viele Nachkommastellen?

vop


----------



## Indyyan (27. Juli 2004)

Danke Vop 

*Warum ist dies dann nur der Fall wenn ich Komma statt einen Punkt verwende...* 

UNION ALL SELECT '1.2', IsNumeric('1.2')
UNION ALL SELECT '1.23', IsNumeric('1.23')
UNION ALL SELECT '1.234', IsNumeric('1.234')
UNION ALL SELECT '1.2345', IsNumeric('1.2345')
UNION ALL SELECT '1.23456', IsNumeric('1.23456')
UNION ALL SELECT '1.234567', IsNumeric('1.234567')
UNION ALL SELECT '1.2345678', IsNumeric('1.2345678')
UNION ALL SELECT '1.23456789', IsNumeric('1.23456789')
UNION ALL SELECT '1.234567890', IsNumeric('1.234567890')
UNION ALL SELECT '1.2345678901', IsNumeric('1.2345678901')
UNION ALL SELECT '1.23456789012', IsNumeric('1.23456789012')
UNION ALL SELECT '1.234567890123', IsNumeric('1.234567890123')
UNION ALL SELECT '1.2345678901234', IsNumeric('1.2345678901234')
UNION ALL SELECT '1.23456789012345', IsNumeric('1.23456789012345')
UNION ALL SELECT '1.234567890123456', IsNumeric('1.234567890123456')
UNION ALL SELECT '1.2345678901234567', IsNumeric('1.2345678901234567')

diese sind alle O.K, bei Komma jedoch die letzten zwei nicht mehr?
Deswegen wäre es eine möglichkeit Komma in Punkt zu tauschen, aber ich weiss nur wie ich eine Spalte verändere, bzw.... 

Hat irgendjemand ein Lösung


----------



## vop (27. Juli 2004)

Um Kommas in Punkte zu verwandeln verwendest du am besten REPLACE

etwa so

UPDATE DeineTabelle SET

DeineSpalte1 = REPLACE( DeineSpalte1, ','  , '.' ) ,
DeineSpalte2 = REPLACE( DeineSpalte2, ','  , '.' )

etc.

Mach am besten vorher noch eine Datensicherung (sicher ist sicher 

vop


----------



## Indyyan (27. Juli 2004)

*Danke vielmals vop*

verstehe das ganze zwar nicht, aber jetzt geht es....


----------

