SQL remplacer toutes les valeurs Null
J'ai une grande table avec des valeurs Null. Quelle est la meilleure façon possible de sélectionner à partir de la table avec des 0 à la place de Null.
Ou si il n'y a pas de moyen facile de le faire, je suis prêt à remplacer physiquement toutes les valeurs null avec des 0 dans la table.
Il y a beaucoup de colonnes, je ne veux pas avoir à passer par chacun avec quelque chose comme ISNULL(FieldName,0) COMME nom de champ.
OriginalL'auteur Alec | 2011-10-28
Vous devez vous connecter pour publier un commentaire.
Comme beaucoup ici l'ont dit, la meilleure approche est ISNULL(), mais si vous voulez un moyen facile de générer tous ceux ISNULL()'utiliser le code suivant:
Cela rendra le fastidieux travail beaucoup plus facile, il vous suffit ensuite de modifier la sortie de compte pour les différents types de champs (int, varchar, date,...)
Edit: la comptabilité pour les différents types de données avec des valeurs par défaut..
0
n'est pas valide valeur de substitution pour tous les types de colonneMis à jour pour répondre 😉 bien sûr, j'ai peut-être raté un type.. mais cela dépend vraiment de ce qu'il est tout à l'aide de ...
Je vais juste écrire une fonction pour construire la requête correct, mais si cela fonctionne, c'est probablement la meilleure solution.
+1 Maintenant, regarde mieux. Bonne idée en effet
OriginalL'auteur Josh Weatherly
Vous avez deux options vraiment
ou pour réellement résoudre le problème et de modifier toutes les données NULL 0
Quand vous faites cela, n'oubliez pas le lieu ou tout finira 0!
Merci pour le rappel sur l'endroit où. Il été fait!
OriginalL'auteur Purplegoldfish
Vous devez spécifier manuellement chaque colonne dans l'instruction SELECT et l'utilisation ISNULL() fonction:
parfois, nous devons faire ce que nous n'aimons pas....
ouais j'ai déjà envisagé cette solution comme je l'ai mentionné. Je suis vraiment surpris de voir que les gens ne poste pas ma question plus souvent. Il semble qu'il y aurait une solution plus simple.
Le plus "simple" solution aurait été de désigner les colonnes comme
NOT NULL DEFAULT 0
lorsque la table a été créée.Ou apprendre à aimer ce que nous devons faire 😉 Une valeur Null dans les données a un autre sens à zéro.
OriginalL'auteur sll
Malgré votre réticence à le faire,
pour chaque colonne est la bonne façon de gérer cela.
OriginalL'auteur Joe Stefanelli
Être un patron. Écrire quelque chose comme:
Il va cracher un grand ol' requête pour vous.
OriginalL'auteur Christophxr
Alternativement à
ISNULL
, vous pouvez utiliserCOALESCE
, qui est la norme ANSI SQL compatible.Vous ne pouvez pas toujours obtenir ce que vous voulez. Trop mauvais. C'est le chemin à parcourir: la colonne par colonne.
OriginalL'auteur Adrian Carneiro
Il n'est pas facile de le faire sans passer par chaque colonne, juste comme vous l'avez dit.
NULL est spécial et distinct du sens à 0. Il n'y a pas de valeur ou de l'inconnu, par opposition à une valeur de zéro. Une base de données les puristes diront qu'une ligne dans une table ne devriez pas avoir de valeurs Null dans les à tous!
Si les valeurs Null dans votre table source signifie vraiment à zéro, alors les modifier, de les traiter autrement avec les valeurs null comme ils se propager par le biais de vos requêtes.
OriginalL'auteur Stephen Turner
Tenir le coup et faire ce une fois pour chacun d'eux:
Vous pouvez oublier tout au sujet de
ISNULL
,COALESCE
, logique tri-valuée, etc.OriginalL'auteur onedaywhen
Je voulais une requête dynamique pour faire la mise à jour de l'option. L'emprunt auprès de la post ci-dessus et un autre j'ai le texte suivant:
OriginalL'auteur user2054797