Retourne la valeur booléenne sur L'instruction SQL Select

Comment renvoyer une valeur booléenne sur L'instruction SQL Select?

, j'ai essayé ce code:

SELECT CAST(1 AS BIT) AS Expr1
FROM [User]
WHERE (UserID = 20070022)

Et ne renvoie la valeur TRUE que si le UserID existe sur la table. Je veux qu'il revienne FALSE si le UserID n'existe pas sur la table. Merci bien.

98
demandé sur mrjimoy_05 2012-04-30 06:14:08

6 réponses

Ce que vous avez là ne retournera aucune ligne si l'utilisateur n'existe pas. Voici ce dont vous avez besoin:

SELECT CASE WHEN EXISTS (
    SELECT *
    FROM [User]
    WHERE UserID = 20070022
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) END
189
répondu Chad 2012-04-30 02:17:07

Peut-être quelque chose dans ce sens:

SELECT CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS BIT)
FROM dummy WHERE id = 1;

Http://sqlfiddle.com/#!3/5e555/1

19
répondu cableload 2015-05-22 10:37:48

Étant Donné que couramment 1 = true et 0 = false, tout ce que vous devez faire est de compter le nombre de lignes, et jeté une boolean.

Par conséquent, votre code posté n'a besoin que d'une fonction COUNT() ajoutée:

SELECT CAST(COUNT(1) AS BIT) AS Expr1
FROM [User]
WHERE (UserID = 20070022)
17
répondu Stewart 2013-08-15 22:28:46
select CAST(COUNT(*) AS BIT) FROM [User] WHERE (UserID = 20070022)

Si count (*) = 0 renvoie false. Si count (*) > 0 renvoie true.

6
répondu G.Noulas 2015-10-13 12:28:13

Je le fais comme ceci:

SELECT 1 FROM [dbo].[User] WHERE UserID = 20070022

Vu qu'un booléen ne peut jamais être null (au moins dans.NET), il devrait par défaut à false ou vous pouvez le définir vous-même si c'est vrai par défaut. Cependant 1 = true, donc null = false, et aucune syntaxe supplémentaire.

Note: j'utilise Dapper comme micro orm, j'imagine QU'ADO devrait fonctionner de la même manière.

3
répondu RandomUs1r 2018-03-02 22:47:38

Utilisez 'Exists' qui renvoie 0 ou 1.

, La requête sera comme:

SELECT EXISTS(SELECT * FROM USER WHERE UserID = 20070022)
3
répondu Ananthi 2018-05-10 10:22:26