Ich habe mich gefragt, ob es möglich ist, so etwas zu tun (was nicht funktioniert):
select cast( (exists(select * from theTable where theColumn like 'theValue%') as bit)
Scheint, als ob es machbar sein sollte, aber viele Dinge, die in SQL funktionieren sollten, funktionieren nicht;) Ich habe Problemumgehungen dafür gesehen (SELECT 1, wo ... existiert ...), aber es scheint, als ob ich in der Lage sein sollte, es einfach zu tun Wirf das Ergebnis der existierenden Funktion als Bit und sei damit fertig.
sql
sql-server
tsql
jcollum
quelle
quelle
Wenn Sie zu Bit werfen
bit
wird direktboolean
in .net-Datentypen zugeordnet, auch wenn es nicht wirklich ...Dies sieht ähnlich aus, gibt jedoch keine Zeile (nicht Null), wenn keine Übereinstimmungen vorliegen, sodass es nicht dasselbe ist
quelle
EXISTS
,COUNT
hält in den Daten für die passenden Zeilen sucht auch nach dem ersten zu finden , weil es Zahl bekommen muss.Ich bin etwas spät dran; stolperte nur über den Pfosten. Hier ist jedoch eine Lösung, die effizienter und übersichtlicher als die ausgewählte Antwort ist, aber dieselbe Funktionalität bieten sollte:
quelle
Sie können
IIF
und verwendenCAST
quelle
Sie können auch Folgendes tun:
Wenn es keine Werte gibt, die mit 'theValue' beginnen, wird null (keine Datensätze) anstelle von Bit 0 zurückgegeben
quelle
Nein, das ist nicht möglich. Der Bitdatentyp ist kein boolescher Datentyp. Es ist ein ganzzahliger Datentyp, der 0,1 oder NULL sein kann.
quelle
IF(@TRUE)
und umgekehrt kann ein Boolescher Ausdruck nicht in ein Bit gezwungen werden. (Mit zBSET @BitVariable = (1=1)
)Eine andere Lösung ist die Verwendung
ISNULL
zusammen mitSELECT TOP 1 1
:quelle
Ich glaube , existiert nur in einer where - Klausel verwendet werden, so dass Sie eine Abhilfe zu tun haben werden (oder eine Unterabfrage mit existieren als where - Klausel). Ich weiß nicht, ob dies als Problemumgehung gilt.
Was ist damit:
quelle
quelle