SQL-Server: Mit einer case-Anweisung, um zu sehen, wenn das Datum NULL ist, und wenn es ist, zurückgeben ' '
Ich habe eine Spalte in meine select-Anweisung sieht wie folgt aus:
SELECT CASE WHEN fu.SentOutDate IS NULL THEN '' ELSE fu.SentOutDate END
Zurück 1900-01-01 00:00:00.000
für diejenigen, die sonst NULL
Ich weiß das, weil, wenn ich in nur fu.SentOutDate
es kommt wie NULL
Warum passiert das und wie kann ich nur wieder ein leerer Wert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist, Gießen Sie Ihre " DATETIME, da Ihre anderen Spalte, die Sie würde wieder in eine datetime-Spalte.
geben Sie den gleichen Wert...
Können Sie wandeln diese in ein varchar(32), aber ich bin mir nicht sicher über die Auswirkungen
Versuchen Sie die Konvertierung des Datums in eine Zeichenfolge, so dass es nicht versuchen, zu konvertieren ", um ein Datum:
Einer Spalte kann nur ein Daten-Typ - DATETIME -! = string/VARCHAR.
Wenn Sie möchten, eine null-Länge-Zeichenfolge in dem Fall den Wert NULL haben, müssen Sie explizit ändern Sie den Datentyp, mit CAST/CONVERT zu ändern, die nicht-NULL-Wert in einen VARCHAR - /etc-Datentyp.
Wenn Sie nur die überprüfung auf NULL-Werte, können Sie versuchen, ISNULL() und cast das Datum als varchar.
SELECT ISNULL(CAST(fu.SentOutDate ALS VARCHAR(50)), ") ALS SendOutDate
VON tablename
Es klingt wie Sie die Anzeige dieses Wertes in ein GUI oder client irgendwo. Meiner Meinung nach, die beste Vorgehensweise ist, konvertieren Sie es von der NULL-Wert nicht in der Abfrage.
Wenn Sie jemals eine Datenbank erstellen, die skaliert auf Millionen von Nutzern, Sie wollen ein wenig Bearbeitung wie möglich in die Datenbank und so viel wie möglich in den client. Tut Konvertierung eines date-Charakter ist eine unnötige Last auf dem system (Zeichen-Berechnung ist immer viel langsamer als Mathematik).
Dies kann funktionieren: