En TSQL, comment évaluer une expression et l'attribuer à un champ de BITS?
Je suis en difficulté sur quelque chose de très simple. Je suis en train d'affecter les résultats d'une expression booléenne à un BIT
variable.
Fondamentalement, je voudrais faire quelque chose comme:
DECLARE @is_search_term_empty BIT
SET @is_search_term_empty = (@search_term = '')
où @search_term
est un NVARCHAR(128)
déclaré quelque part ailleurs dans le code.
Je ne peux pas travailler la syntaxe afin d'évaluer quelque chose et l'attribuer à un BIT
variable, c'est à dire:
SET @is_search_term_empty = (1 > 2)
Grâce.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire avec un
CASE
déclaration:À partir de SQL 2012, vous pouvez maintenant utiliser la fonction IIf (). Votre exemple serait maintenant ressembler;
C'est encore essentiellement un CAS de déclaration sous le capot, mais est plus facile à digérer.
Vous pouvez tout simplement mis un valeur par défaut pour votre
bit
variable, alors il suffit d'appliquer unIF
déclaration comme ceci:L'une des raisons pour cela est si difficile à faire, c'est que T-SQL utilise trois-estimé la logique booléenne. Le VRAI et le FAUX ne sont pas les seules options, il y a aussi INCONNU. Nous avons un concept similaire, avec des valeurs NULLES, et beaucoup de fonctionnalités de langage existe pas de traduire à partir des valeurs des expressions booléennes (
=
,IS NULL
,IS NOT NULL
, etc.), mais il n'y a pas une telle chose commeIS UNKNOWN
, ou d'autres fonctionnalités de la langue à traduire directement à partir d'une expression booléenne à un type de données bit.Voici un exemple de solution. Malheureusement, cela implique que l'expression à tester (
1 = NULL
, ici) doit être dupliqué dans le code, vous pouvez éviter cela avec sp_executesql de paramètres de sortie et si vous avez vraiment besoin de:Cet exemple s'appuie sur le fait que NON(ne sait pas) renvoie INCONNU, pas VRAI. De toute évidence, cela dépend de votre colonne de BITS étant nullable. De même, si vous souhaitez éviter de trois à valeur logique booléenne, vous devez vous assurer qu'aucun de vos expression entrées peuvent jamais être null.