SQL - Konvertierung von VARCHAR zu NUMERIC

Indyyan

Grünschnabel
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:

Code:
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

Code:
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
 
Zuletzt bearbeitet:
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
 
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?
 
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
 
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
 
Zurück