Eine SQL-Abfrage, die Nullwerte ersetzt.
Frage
Ich brauche eine SQL-Abfrage, die ContactDate, sortname, Stadt, Contact und Zusammenfassung aus den nachstehenden Tabellen zurückgibt. Wenn jeder Wert null ist, muss ich es den Text „No Entry“ zurückzukehren.
ContactTable
- ContactID
- ContactDate
- UserID
- Zusammenfassung
- Contact
- sortname
Usertable
- UserID
- Vorname
- Name
- AddressID
Adresstabelle
- AddressID
- City
- Straße
- Staat
- Zip
Lösung
SELECT COALESCE(CAST(CONVERT(VARCHAR(10), ContactTable.ContactDate, 101) AS VARCHAR(10)), 'No Entry') AS ContactDate,
COALESCE(ContactTable.SortName, 'No Entry') AS SortName,
COALESCE(AddressTable.City, 'No Entry') AS City,
COALESCE(ContactTable.ContactType, 'No Entry') AS ContactType
FROM ContactTable
LEFT OUTER JOIN UserTable ON ContactTable.UserID = UserTable.UserID
LEFT OUTER JOIN AddressTable ON UserTable.AddressID = AddressTable.AddressID
Hier ist ein Diagramm von SQL Datetime-Formate für die CONVERT-Anweisung oben.
Andere Tipps
COALESCE () auf jeder Plattform, die es wert sein Gewicht in Salz ist.
Stellen Sie sicher, Guss Probleme zu behandeln.
Wie zum Beispiel:
--(SQL Server)
SELECT
C.ContactID,
COALESCE(CAST(CONVERT(varchar(10), C.ContactDate, 101) AS varchar(10), 'No Entry') AS ContactDate,
COALESCE(SorName, 'No Entry') AS SortName
usw., Etc.
SELECT
ISNULL(ContactDate, 'No Entry') AS ContactDate
FROM Table
ISNULL verwenden ist ziemlich einfach.
Die Oracle-Version dieser Funktion wird nvl
genannt. Gleiche Verwendung -. SELECT nvl(col_name, desired_value) FROM foo
Die allgemeinere Version davon ist decode
, die drei Parameter hat und ermöglicht es Ihnen, welche Spalte Wert, den Sie angeben möchten, für einen Ersatz durchzuführen (so können Sie alle ‚Johnny‘ Ersetzen durch ‚John‘ oder etwas).
Mit ' IIF ist eine Lösung Zugang DB, sondern kann auch in anderen DBs arbeiten.
SELECT IIF(IsNull(Foo), 'No Entry' ,Foo), IIF(IsNull(Bar), 'No Entry' ,Bar) From TableName
Die Funktion IIF gibt einen von zwei Werten abhängig von der Auswertung eines Ausdrucks.
SQL-Syntax:
IIF (Ausdruck, true-Wert 1, falsch-Wert)
Sie können auch verschiedene Anrufe für jede Spalte machen. Es wird mehr einzelne Anrufe dauern, aber es kann schneller sein, wenn Sie viele Zeilen haben nicht zu aktualisieren.
update ContactTable set ContactDate = 'No Entry' where ContactDate is null;
Wiederholen Sie für jede Spalte.