1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Konvertierung führte zum Überlauf einer int-Spalte

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von IchHH, 30 Oktober 2018.

  1. IchHH

    IchHH Datenbank-Guru

    Hallo ich versuche mittels

    sum(RIGHT([BKV_1].[BKV_KT],18)/9) as Ergebniss

    eine Zahl zu errechnen und bekomme dann den Fehler, wie er aus der Überschrift zu entnehmen ist.

    Was aber machen ich falsch? Bzw. wie schaffe stelle ich das ab?
     
  2. ukulele

    ukulele Datenbank-Guru

    Deine Spalte [BKV_1].[BKV_KT] wird eine Zeichenkette sein und bei einem betroffenen Datensatz wird die Konvertierung in eine Zahl scheitern, vermutlich weil ein für Zahlen ungültiges Zeichen in der Zeichenkette steht.

    Du kannst diese Datensätze entweder im WHERE-Teil komplett filtern oder per CASE vorher prüfen ob es sich um einen numerischen Wert handelt.
    Code:
    sum(CASE WHEN isnumeric(RIGHT([BKV_1].[BKV_KT],18)) = 1 THEN RIGHT([BKV_1].[BKV_KT],18)/9 ELSE 0 END) as Ergebniss
     
  3. IchHH

    IchHH Datenbank-Guru

    Hallo Ukulele,

    guter Ansatz, leider hat der nicht funktioniert. Die Fehlermeldung ist die selbe.
    Die Zahlen die dort rauskommen beim right sollten aber alle numerischer Art sein. Deshalb verwundert mich die Fehlermeldung sehr.

    Interessanterweise sagt das System das es sich um ein Varchar handelt, selbst dann wenn ich es in einer anderen Tabelle importieren lasse.
     
  4. IchHH

    IchHH Datenbank-Guru

    Ich haben nun mal alles rausgefilter was nicht "isnumeric = 1" ist und die Fehlermeldung bleibt noch immer die selbe.
     
  5. ukulele

    ukulele Datenbank-Guru

    Wenn du deine Zeichenkette durch 9 teilst versucht SQL die Zeichenkette in eine Zahl zu konvertieren, ich glaube Integer. Vielleicht ist deine bis zu 18-Stellen lange Zahl irgendwo zu groß? Du kannst ja mal deinen Select vereinfachen auf z.B. CONVERT(BIGINT,RIGHT([BKV_1].[BKV_KT],18)), kommt da die selbe Fehlermeldung? Bei Nachkommastellen muss eventuell auch FLOAT oder NUMERIC verwendet werden, du solltest auf jeden Fall explizit in das gewünschte Format konvertieren. Wenn das dann klappt kannst du teilen und summieren.
     
  6. IchHH

    IchHH Datenbank-Guru

    Ich habe eine Konvertierung in Numeric vorgenommen und anschließend die Daten mit ISNUMERIC geprüft. Nirgends ist eine 0 enthalten. Dennoch die selbe Fehlermeldung. So langsam weiß ich auch nicht mehr weiter.
     
  7. ukulele

    ukulele Datenbank-Guru

    Hm da hab ich auch grade keine Idee mehr. Sind Nachkommastellen enthalten? Hier gilt meist das US Format bei der Konvertierung mit . als Dezimalkennzeichen und , wird als Tausender-Trennzeichen interpretiert.
     
Die Seite wird geladen...
Ähnliche Themen - Konvertierung führte Überlauf
  1. g0drealm
    Antworten:
    2
    Aufrufe:
    482

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden