![]() |
Datenbank: Pervasive • Version: 11.3 • Zugriff über: PDAC
SQL: wenn leeres Tabellenfeld dann Defaultwert zuweisen
Hallo zusammen,
über eine Query hole ich mir Werte aus verschiedenen Tabellen in ein Quantumgrid. Jetzt hat eine Tabelle in einer Spalte Euro-Werte als String mit Punkt als Dezimaltrenner gespeichert! :wall: Da kann ich leider nichts ändern. Nun möchte ich die Werte trotzdem als Currency-Werte im Qunatumgrid speichern. Das klappt auch, wenn ich in der SQL-Abfrage folgendes anwende:
Code:
Nun gibt es aber auch noch leere Felder...
Convert(Replace(LTrim(A.Eurowert),'.', ','), SQL_CHAR)
Ich hatte gehofft dass ich mit SQL_DECIMAL oder SQL_NUMMERIC oder SQL_REAL das Ganze so konvertiert bekomme, dass immer eine Zahl raus kommt (auch bei leeren Feldern), aber da bekomme ich einen SQL-Fehler! Anscheinend kann die DB diese Abfrage so nicht anwenden. Kennt jemand eine Möglichkeit im SQL-Statement einem leeren Feld ein Defaultwert zuzuweisen (in meinem Fall => 0,00)? Vielen Dank schon mal vorab! |
AW: SQL: wenn leeres Tabellenfeld dann Defaultwert zuweisen
Versuch es mal mit
SQL-Code:
case when A.Eurowert is null then 0 else Convert(Replace(LTrim(A.Eurowert),'.', ','), SQL_CHAR) end
|
AW: SQL: wenn leeres Tabellenfeld dann Defaultwert zuweisen
Ansonsten gibt es auch noch coalesce
|
AW: SQL: wenn leeres Tabellenfeld dann Defaultwert zuweisen
Vielen Dank euch beiden!!!:thumb:
Beides hilft mir weiter! :dp: |
AW: SQL: wenn leeres Tabellenfeld dann Defaultwert zuweisen
COALESCE ist hier natürlich das Mittel der Wahl, aber bezüglich dieser CASE-Dinger ... da gibt es in vielen DBMS auch noch sowas wie IIF/IFTHEN. :stupid:
|
AW: SQL: wenn leeres Tabellenfeld dann Defaultwert zuweisen
Zitat:
|
AW: SQL: wenn leeres Tabellenfeld dann Defaultwert zuweisen
Und natürlich würde man nicht einen Punkt durch ein Komma ersetzen - das ist doch sehr kurzsichtig.
Nein, man castet natürlich in den Datentyp den das Feld von Anfang an hätte haben sollen:
SQL-Code:
SELECT Cast(A.Eurowert AS DECIMAL(8,2)) AS EurowertNeu, ... FROM ...
Zum Glück enthält das Feld einen Punkt als Dezimaltrenner; bei einem Komma hätte man tatsächlich die Replace-Funktion gebraucht. |
AW: SQL: wenn leeres Tabellenfeld dann Defaultwert zuweisen
Zitat:
Nja, anhand der Fragestellung wird das auch irgendwie klar. * wenn Leer, dann nimm das Andere -> COALESCE/IFNULL * wenn dies und das, dann nimm das, ansonsten jenes IFTHEN/IIF, bzw. IF-THEN-ELSE oder das lange CASE, was eigentlich eher für mehr als 2 geeignet ist. Das "Zuweisen" war eh falsch, da du doch nirgendwo was zuweisen tust (zumindestens nicht im gezeigten Code), sondern du willst auslesen/verwenden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz