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

Komma verruscht beim Convert

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von IchHH, 23 April 2018.

  1. IchHH

    IchHH Datenbank-Guru

    Hallo,

    ich habe in einer Spalte einen varcahr Wert der -57,6 lautet oder 351712,29 wenn ich diese Werte mittels

    convert(money,myValue1) as Name

    umwandel kommt -576,00 bzw. 35171229,00 raus. Das heißt also das er entweder das "," um ein oder zwei Stellen verschiebt. Aber Warum? Und wie unterbinde ich das?
     
  2. IchHH

    IchHH Datenbank-Guru

    Hallo, bin schon mal soweit das ich verstanden habe, dass wenn hinterm Komma 1 Zeigen steht er auch nur ein Komma nach rechts versetzt, bei zwei Zeichen hinterm Komma auch das komma um zwei Zeichen versetzt.
     
  3. IchHH

    IchHH Datenbank-Guru

    Kann eine Lösung wie folgt aussehen?

    Code:
    Select
    Case When [Saldo_vom_02012018] like '%,_' then convert(money,[Saldo_vom_02012018])/10 Else convert(money,[Saldo_vom_02012018])/100 End as [Saldo vom 02.01.2018]
      FROM [DIAS_Import].[dbo].[IM_10025]
     
  4. akretschmer

    akretschmer Datenbank-Guru

    ich würde einfach im String das Komma gegen Punkt tauschen und danncasten:

    Code:
    test=*# select replace('-56,2',',','.')::numeric;
     replace
    ---------
      -56.2
    (1 Zeile)
    
    und in Zukunft gleich richtige Datentypen verwenden...
     
  5. IchHH

    IchHH Datenbank-Guru

    Das mit dem Komma durch Punkt hatte ich vorher und gibt scheinbar probleme beim Rechnen zweiter Beträge (siehe anderen Beitrag heute), weshalb ich es nun bei Komma belassen wollte und schauen wollte ob die Berechnung dann klappt. Oder wie erklärst du dir das, dass meine Formel im anderen Beitrag nicht mehr funktioniert? Da versucht er nämlich money mit Varchar bzw. decimal zu addieren.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Nun, was erwartest Du von "5€" + "schönes Wetter" ?
     
  7. IchHH

    IchHH Datenbank-Guru

    Um eben zu verhindern das 5€+"gutes Wetter" gerechnet wird, versuche ich den Weg über die Wenn Dann Formel einen Money betrag zu machen, dass klappt soweit auch ganz gut. Rechnen tut er es dennoch nicht. Wobei ich nun festgestellt habe dass wenn er

    Code:
    SELECT max(ORDINAL_POSITION) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = [dbo].[tmp3]
    versucht auszuführen nur die Meldung "Der mehrteilige Bezeichner 'dbo.tmp3' konnte nicht gebunden werden." kommt. Wobei ich nicht verstehe warum.
     
  8. IchHH

    IchHH Datenbank-Guru

    Habe das Problem gefunden. Und mein Ansatz mit den Umwandeln über mehrer Case When Funktion hat auch super geklappt.
     
  9. ukulele

    ukulele Datenbank-Guru

    Die , sind definitiv in Punkte zu wandeln da im Englischen das Komma Tausenderschritte seperiert und der Punkt die Cents. Dannach kann man natürlich alles mögliche prüfen, z.B. isnumeric() = 1, dann können höchstens noch zuviele Nachkommastellen kommen oder die Zahl für Money zu groß sein.
     
Die Seite wird geladen...

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