SELECT LIFNR,
SUM(CASE WHEN UPPER([WAERS])="USD" THEN ROUND(CONVERT(numeric(10, 2), DMBTR)* (-1), 2)
WHEN UPPER(WAERS)="USD" THEN ROUND(CONVERT(numeric(10, 2), DMBTR), 2)
ELSE ROUND(CONVERT(numeric(10, 2), DMBTR), 2)
END)
AS "AMOUNT"
FROM tbl_BSAK
GROUP BY LIFNR;
Hallo allerseits. Ich habe gerade ein Stück Code geschrieben und bekomme immer mehrdie Fehlermeldung "Fehler beim Konvertieren des Datentyps varchar in numerisch". Ich bin sicher, es ist eine einfache Lösung, aber ich habe viel zu viel Zeit mit der Fehlersuche verbracht...
Bitte hilf mir!!!! Fehler beim konvertieren des varchar werts in den int datentyp die. Vielen Dank!!! Antworten:
4 für die Antwort № 1 Basierend auf der Syntax gehe ich davon aus, dass dies SQL Server ist. Wenn Sie den fehlerhaften Wert ermitteln möchten, gehen Sie folgendermaßen vor:
select *
where isnumeric(DMBTR) = 0 and DMBTR is not null;
So beheben Sie das Problem:
SUM(CASE WHEN isnumeric(DMBTR) = 1and UPPER([WAERS])="USD" THEN ROUND(CONVERT(numeric(10, 2), DMBTR)* (-1), 2)
WHEN isnumeric(DMBTR) = 1 and UPPER(WAERS)="USD" THEN ROUND(CONVERT(numeric(10, 2), DMBTR), 2)
when isnumeric(DMBTR) = 1 then ROUND(CONVERT(numeric(10, 2), DMBTR), 2)
GROUP BY LIFNR;
Fehler Beim Konvertieren Des Varchar Werts In Den Int Datentyp 2017
Ich habe eine Tabelle:
Account_Code | Desc
503100 | account xxx
503103 | account xxx
503104 | account xxx
503102 A | account xxx
503110 B | account xxx
Wo Account_Code ist ein varchar. Wenn ich eine Abfrage erstellen, unten:
Select
cast ( account_code as numeric ( 20, 0)) as account_code,
descr
from account
where isnumeric ( account_code) = 1
Läuft es auch durch Rücksendung alle aufnehmen, die einen gültigen numerischen Wert in account_code Spalte. Konvertierung fehlgeschlagen beim Konvertieren des varchar-Werts von string in den Datentyp int - Javaer101. Aber wenn ich versuche, fügen Sie ein anderes auswählen, verschachtelt vor sql:
select account_code, descr
from
(
Select cast ( account_code as numeric ( 20, 0)) as account_code, descr
where isnumeric ( account_code) = 1) a
WHERE account_code between 503100 and 503105
die Abfrage gibt einen Fehler zurück
Fehler beim konvertieren von Datentyp varchar in numeric. Was ist dort passiert? Habe ich bereits konvertiert numerischen wenn account_code gültig, aber es scheint die Abfrage immer noch versuchen, den Prozess einer nicht gültigen Datensatz.
Fehler Beim Konvertieren Des Varchar Werts In Den Int Datentyp Die
Auch
set k_num = cast(k_txt as decimal(18, 4))
wirft den Fehler 8114...
/edit: nee, nur Zahlen und ein oder zweimal ein Komma (im ersten Durchgang)
Geändert von hcscherzer (09. 2010 um 18:13 Uhr). Grund: Antwort auf #7
09. 2010, 18:19
# 9
nur Zahlen und ein oder zweimal ein Komma (im ersten Durchgang)
Komma oder Punkt? Die Konvertierung nach money ist anscheinend auch bei Komma toleranter. Anm. : auf das Komma vs. Punkt bin ich auch schon oft genug reingefallen, weil das mit isnumeric nicht abgefangen wird. 09. 2010, 20:29
# 10
Komma. Das waren ja deutsche Pädagoginnen, die diese 'nummerischen' Zeichenfolgen in das Textfeld eingegeben haben... ein Punkt würde da höchstens einem Programmierer und / oder Angelsachsen einfallen... Die Anweisung
select k_num, k_txt from tbl
bringt sowohl die Datensätze mit Komma zwischen den Ziffern als auch die mit einem Punkt (hab eben mal ein paar Punkte reingeschmuggelt). Fehler beim konvertieren des varchar werts in den int datentyp 2017. Geändert von hcscherzer (09. 2010 um 20:31 Uhr).
Ich tippe jetzt mal darauf, dass der Wert als String aus dem Grid kommt. Damit steht als Dezimalzeichen ein Beistrich drinnen. Für den SQL-Server, der nur das amerikanische Format vorsieht, muss der Dezimaltrenner aber ein Punkt sein. SQL Server: nvarchar-Typ in INT konvertieren - Javaer101. Wird vielleicht auch etwas verständlicher, wenn man sich dieses Beispiel ansieht:
insert into tabelle(float1, float2) values(1, 2, 3)
gegenüber
insert into tabelle(float1, float2) values(1. 2, 3)
Und während eine Zuweisung
declare @x decimal(8, 2); select @x = '1. 2'
noch funktioniert, gibt das bei
declare @y decimal(8, 2); select @y = '1, 2'
die bei dir auftauchende Fehlermeldung. Hoffe, du kannst damit dein Problem lösen. bye,
Helmut