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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top