Wie die Ausgabe eines boolean in T-SQL basierend auf dem Inhalt einer Spalte?
-
03-07-2019 - |
Frage
Ich machte einen Blick auf abstrakte Spalten verschiedener Tabellen und pre-filter and pre-Sortieren Sie.Es ist eine Spalte, deren Inhalt ich nicht kenne, aber ich muss wissen, ob der Inhalt null ist oder nicht.So meine Ansicht übergeben sollten einen alias als "true"im Fall, dass der Wert der angegebenen Spalte ist nicht null und "false"im Fall der Wert null.
Wie kann ich wählen Sie eine solche Boolesche mit T-SQL?
Lösung
Sie haben zu verwenden eine FALL Erklärung für das:
SELECT CASE WHEN columnName IS NULL THEN 'false' ELSE 'true' END FROM tableName;
Andere Tipps
Oder Sie können tun wie diese:
SELECT RealColumn, CAST(0 AS bit) AS FakeBitColumn FROM tblTable
Wenn Sie eine Ausgabe als boolean
CAST(CASE WHEN colName IS NULL THEN 0 ELSE 1 END as BIT) aIsBooked
für die Spalte in der Ansicht, die Sie verwenden können, so etwas wie
CASE WHEN ColumnName is not null THEN 'True' ELSE 'False' END
oder in einer Aussage
SELECT
s.ID,
s.[Name],
CASE WHEN s.AchievedDate is not null THEN 'True' ELSE 'False' END [IsAchieved]
FROM Schools s
oder für die weitere Bearbeitung im Nachhinein würde ich persönlich verwenden
SELECT
s.ID,
s.[Name],
CASE WHEN s.AchievedDate is not null THEN 1 ELSE 0 END [IsAchieved]
FROM Schools s
Ich hatte ein ähnliches Problem, wo ich wollte einen Blick zurück eine Boolesche Spalte Typ basierend darauf, ob eine Spalte null ist oder nicht.Ich erstellte eine benutzerdefinierte Funktion wie folgt:
CREATE FUNCTION IsDatePopulated(@DateColumn as datetime)
RETURNS bit
AS
BEGIN
DECLARE @ReturnBit bit;
SELECT @ReturnBit =
CASE WHEN @DateColumn IS NULL
THEN 0
ELSE 1
END
RETURN @ReturnBit
END
Dann der Blick, den ich erstellt gibt eine bit-Spalte, statt eine ganze Zahl.
CREATE VIEW testView
AS
SELECT dbo.IsDatePopulated(DateDeleted) as [IsDeleted]
FROM Company
Sie fragte nach boolean, wir nennen Sie etwas in t-sql.
Andere Antworten haben entweder einen varchar 'true' und 'false' oder 1 und 0.'wahr' und 'falsch' sind offensichtlich varchar, nicht boolean.Ich glaube, dass 1 und 0 umgewandelt werden, wie ein integer, aber es ist sicherlich nicht ein bisschen.Dies mag nit-wählerisch, aber die Typen Frage ganz oft.
Um einen tatsächlichen bit-Wert, die Sie benötigen, um zu werfen Sie Ihre Ausgabe explizit als ein bisschen wie:
select case when tableName.columnName IS NULL then cast(0 as bit) else cast(1
as bit) END as ColumnLabel from tableName