Oracle SQL Syntax - Vérifier plusieurs colonnes n'EST PAS NULL
Est-il une syntaxe plus concise pour vérifier si plusieurs colonnes sont pas nulles? Je suis à la recherche de simplifier
weight IS NOT NULL AND
weight_unit IS NOT NULL AND
length IS NOT NULL AND
width IS NOT NULL AND
height IS NOT NULL AND
dimensional_unit IS NOT NULL
dans quelque chose de plus court.
De l'utilisation d'Oracle, si elle est pertinente.
Je suis sûr que ce est dupe, mais je n'arrive pas à le localiser.
Si cela est susceptible d'être une condition que vous voulez éviter (j'.e toutes les valeurs null) alors je vous suggérons d'ajouter les contraintes not NULL sur la table, puis votre requête ne sera jamais besoin de vérifier.
D'accord avec @DaveRlz: suggère d'avoir des tables séparées pour les
semble assez facile à lire et à à la point de la façon dont vous l'avez...pourquoi la nécessité de changer pour quelque chose d'autre?
Comme mon SQL est actuellement écrit, je dois répéter que l'extrait quatre fois - alors que je cherchais une belle solution.
Si cela est susceptible d'être une condition que vous voulez éviter (j'.e toutes les valeurs null) alors je vous suggérons d'ajouter les contraintes not NULL sur la table, puis votre requête ne sera jamais besoin de vérifier.
D'accord avec @DaveRlz: suggère d'avoir des tables séparées pour les
ThingWeight
et ThingSize
, respectivement, de sorte que si une chose est de poids est inconnu/non applicable/etc, puis ne pas ajouter une ligne à la ThingWeight
table.semble assez facile à lire et à à la point de la façon dont vous l'avez...pourquoi la nécessité de changer pour quelque chose d'autre?
Comme mon SQL est actuellement écrit, je dois répéter que l'extrait quatre fois - alors que je cherchais une belle solution.
OriginalL'auteur jbreed | 2011-12-21
Vous devez vous connecter pour publier un commentaire.
Avec De Morgan, la loi de:
vous économisez 20 caractères 😉
OriginalL'auteur dani herrera
Autant que je sache, il n'y a pas une telle syntaxe.
Mais si elles sont toutes numériques, vous pouvez utiliser cette astuce:
Dans le cas où quelqu'un veut traduire ce truc à la concaténation de varchar2 ou des colonnes varchar, id ne fonctionne pas. Dans Oracle à l'aide de la concaténation.
A || B
seraA
siB
est null. Si " C1 || C2 || C3 || C4 serait pas null si aucune colonne n'a pas la valeur null.Pas un problème ici, vraiment. Le 6 enchaîné
IS NOT NULL
conditions ne va pas être l'indice sympathique cependant vous le faites.c'est juste un remue-méninges. Et, comme Martin l'a dit, il n'est sans doute qu'un index sera utilisé avec un simple "n'est pas nulle". Cependant, je suis sûr que la version originale avec de nombreux "n'est pas null"s, c'est mieux.
Oracle B-Arbre d'index n'ont pas de valeurs null, tandis que la bitmap d'index ne. Oracle, cependant, a également toute l'Indice de Scan Rapide et Complet d'Analyse d'Index, les chemins d'accès dans certains cas, peut répondre à une requête uniquement à partir des index, sans frapper une table. Et en plus, il y a un index bitmap conversion chemin d'accès qui est capable de combiner plusieurs indices. Il est tout simplement pas une bonne idée d'utiliser un complexe fonctionnel de restriction lorsque vous pouvez utiliser une conjonction de primitifs. La base de données a plus de chances d'optimiser la dernière—et pas seulement aujourd'hui, les bases de données, mais les futures versions améliorées trop.
OriginalL'auteur Florin Ghita
C'est une très bonne solution, pourquoi les downvotes?
OriginalL'auteur Sigurrd Greinert
Si vous voulez vérifier si TOUTES les colonnes ne sont PAS NULL, alors vous peut Concaténer vos colonnes d'abord et puis de tester une fois n'EST PAS NULL e.g:
Il s'agira de vérifier si toutes les valeurs dans l'ensemble de ces champs n'est pas venu pour un total de NULL.
Si juste à tester si il y a peut être un NUL parmi eux, alors je pense que l'original de votre déclaration à partir de la question est toujours la meilleure façon de le faire.
Toutes mes excuses, mis à jour en conséquence
Dans Oracle, la version révisée de la réponse renvoie true si une valeur n'est pas nulle, pas si toutes les réponses ne sont pas nulles (par exemple
'a' || null = 'a'
).OriginalL'auteur Matt Donnan
J'ai essayé de résoudre ce problème,
Si toutes les colonnes/les variables sont de type numérique ou varchar2 ensuite, nous pouvons utiliser de la manière suivante dans sql, pl/sql :
Espère que cela va vous aider.
OriginalL'auteur Amol
Comment à ce sujet .....
fusionner(champ1,champ2,....,fieldn) n'est pas nulle
Je pense que ce serait la fin!!!!
OriginalL'auteur Rabi Panda