Je me demandais s'il était possible de faire quelque chose comme ça (qui ne fonctionne pas):
select cast( (exists(select * from theTable where theColumn like 'theValue%') as bit)
On dirait que cela devrait être faisable, mais beaucoup de choses qui devraient fonctionner en SQL ne le font pas;) J'ai vu des solutions de contournement pour cela (SELECT 1 où ... existe ...) mais il semble que je devrais être capable de simplement cast le résultat de la fonction existe un peu et en finir avec elle.
sql
sql-server
tsql
jcollum
la source
la source
Lorsque vous jetez à mordre
bit
correspond directement àboolean
types de données .net, même si ce n'est pas vraiment le cas ...Cela semble similaire mais ne donne aucune ligne (pas zéro) si aucune correspondance, donc ce n'est pas la même chose
la source
EXISTS
,COUNT
continuera à rechercher dans les données les lignes correspondantes même après avoir trouvé la première, car il doit obtenir le nombre.Je suis un peu en retard sur l'adoption de cela; vient de trébucher sur le message. Cependant, voici une solution qui est plus efficace et soignée que la réponse choisie, mais qui devrait donner la même fonctionnalité:
la source
Vous pouvez utiliser
IIF
etCAST
la source
Vous pouvez également effectuer les opérations suivantes:
S'il n'y a pas de valeurs commençant par 'theValue', cela retournera null (pas d'enregistrements) au lieu d'un bit 0
la source
Non, ce n'est pas possible. Le type de données bit n'est pas un type de données booléen. C'est un type de données entier qui peut être 0,1 ou NULL.
la source
IF(@TRUE)
par exemple, ni vice-versa une expression booléenne ne peut être forcée en un bit. (Avec par exempleSET @BitVariable = (1=1)
)Une autre solution consiste à utiliser
ISNULL
en tandem avecSELECT TOP 1 1
:la source
Je crois qu'exister ne peut être utilisé que dans une clause where, vous devrez donc faire une solution de contournement (ou une sous-requête avec existe comme clause where). Je ne sais pas si cela compte comme une solution de contournement.
Et ça:
la source
la source