web-dev-qa-db-fra.com

Utilisation d'opérateurs de comparaison dans la clause SELECT de la requête T-SQL

Comment sélectionner un résultat d'opérateur de comparaison comme champ de type BIT?

Comment ça marche dans C#:

bool isGreater = FieldA > FieldB;

Comment cela ne fonctionne pas dans T-SQL:

SELECT (FieldA > FieldB) AS BIT FROM t

Comment écrire une telle tâche correctement?

43
abatishchev

Vous devez utiliser la clause CASE:

CASE
    WHEN FieldA > FieldB THEN 1
    ELSE 0
END AS [BIT]
58
Rockcoder
Select Convert(Bit, Case When FieldA > FieldB Then 1 Else 0 End) As YourBitColumn

Si vous souhaitez renvoyer un BIT, vous avez besoin de la conversion (ou de la conversion) en un type de données bit, sinon, SQL interpréterait la constante codée en dur (1 ou 0) comme un entier.

42
George Mastros