J'ai une requête SQL simple (SQL Server 2005) où je sélectionne à partir d'une table contenant plusieurs colonnes qui ont des valeurs de bit. Ces colonnes sont nulllables, donc peut contenir NULL, 0 ou 1.
Il existe un nombre juste de ces colonnes et dans ma requête, je souhaite retourner zéro si la valeur est null.
J'utilise actuellement Isnull comme si: p> Comme je l'ai mentionné, il y a beaucoup de ces colonnes de bits (beaucoup plus que dans l'exemple simple ci-dessus).
Existe-t-il une façon d'utiliser Isnull sur plusieurs colonnes comme ceci: p> La requête ci-dessus ne fonctionne pas mais vous obtenez ce que j'essaie de faire - donc je peux Évitez d'avoir à écrire une instruction ISNULL pour chaque colonne, P> Merci. P> P>
6 Réponses :
Je ne pense pas. Mais une option peut être de créer une vue sur cette table et de mettre toutes les déclarations par exemple. P> isnull code> dans la vue. Au moins, vous n'aurez pas à le faire à chaque fois
Malheureusement, la réponse simple est Vous pouvez écrire de manière dynamique SQL, mais tout ce qui se passe, le SQL final résultant devrait être non code>. p>
isnull (A, 0), ISNULL (B, 0), ISNULL (C, 0), ISnull (D, 0 ), etc code> p>
Essayez ceci:
SELECT ISNULL(COALESCE(LikesOranges, LikesApples, LikesPears),0) AS MyBit FROM FoodPreferences
Ce n'est pas ce qui a demandé. La question était d'obtenir toutes les données de colonne en tant que paramètre ISnull.
Oui, mais c'est juste un pas. Laissez-les cuire le repas enfin. :)
Je pense qu'il veut dire qu'il possède de nombreuses colonnes nullables et veulent être une colonne ISNULL sur EAHC séparément (pas une regroupement multicolonne) sans avoir à saisir tous les nom de colonne.
Je pense que vous pouvez écrire un programme simple et générer une clause sélectionnée en lisant toutes les colonnes et en générant le SELECT P>
afin que je puisse éviter d'écrire un Déclaration isnull pour chaque colonne, p>
Exécutez cette requête et copiez le résultat à votre instruction SELECT.
system_type_id = 104 code> filtre le résultat surbit code> colonnes. p>xxx pré> résultat: p>
xxx < / Pré> BlockQuote>
C'est une solution de contournement fantastique sur le problème - c'est ce genre de pensée créative qui fait une telle ressource précieuse. Merci.
Bien que non ceci:
Comme mentionné dans les réponses précédentes, la coalesce retournera la première valeur non nulle qui n'est pas la question de la question.
Avez-vous besoin que les colonnes soient nullables?
Oui, je ne suis pas capable de modifier la table de quelque manière que ce soit