Travailler sur un problème qui utilise la formule de changement de pourcentage:
percent change = 100 * [(new value - old value) / old value]
Comment pourrais-je expliquer la différence si new value or old value = NULL
, plutôt qu'à 0
quelqu'un qui pourrait ne pas être un programmeur?
Mon patron se demande pourquoi il y a une chaîne vide dans la zone de texte plutôt qu'une valeur, car nous avons l'ancienne valeur, mais pas la nouvelle.
NULL
c'est un état , pas une valeur - cela signifie que vous ne la connaissez pas. Pour SQL, j'utilise normalement l'analogie du parti pour démontrer.Réponses:
Pour expliquer à un patron la différence entre "zéro" et "nul":
"Zéro" est une valeur. C'est la quantité unique et connue de zéro qui est significative en arithmétique et autres mathématiques.
"Null" est une non-valeur. C'est un "espace réservé" pour une valeur de donnée inconnue ou non spécifiée. Cela n'a de sens que dans ce contexte; les opérations mathématiques ne peuvent pas être effectuées sur null (le résultat d'une telle opération est indéfini et est donc généralement représenté par null).
Par exemple, comme dans les commentaires: "Quel est votre revenu annuel?" est une question nécessitant une réponse numérique. "0" est une réponse parfaitement valable pour quelqu'un qui ne travaille pas et n'a aucun revenu de placement. Si l'utilisateur n'entre aucune valeur, il ne gagne pas nécessairement d'argent; ils ne voulaient tout simplement pas dire à votre logiciel combien (ou peu) ils gagnent. C'est un inconnu, non spécifié; par conséquent, pour permettre au logiciel de continuer, vous spécifiez l’espace réservé "null" pour ce champ de données dans le logiciel. C'est techniquement valide du point de vue des données; sa validité au niveau de l'entreprise dépend de la nécessité d'une valeur numérique réelle (même zéro) pour effectuer une opération mathématique (telle que le calcul des taxes ou la comparaison avec des seuils déterminant les avantages).
Sur les ordinateurs, pratiquement toutes les opérations sur une variable contenant la valeur null entraîneront une condition nulle ou une erreur, car l'une des valeurs de la variable n'étant pas connue, le résultat de l'expression ne peut pas être connu. Si je vous demandais "Quel est le nombre de cinq plus le nombre auquel je pense actuellement?" Il est impossible pour vous de donner une réponse définitive car vous ne connaissez pas le chiffre auquel je pense. Une opération sur zéro, à l'exception de la division par celle-ci, est généralement valide et renverra une autre valeur unique connue.
la source
NULL
.NULL
est le explict MANQUE des données, il est un espace réservé, il est une représentation unique solitaire sans données.Boss-talk est toujours difficile ...
Zéro est un nombre pour que vous puissiez faire des choses avec.
Null est une licorne. Cela n'existe pas, vous ne pouvez donc rien faire du tout.
la source
NVL(somefield,'UNICORN')
)Il suffit de reformuler les équations en phrases:
et
Bien sûr, la réponse aux deux questions est "Il ne peut pas être calculé, car l’un des éléments critiques du calcul est manquant". C'est l'essence de 'null'.
Il devrait alors être facile de trouver les phrases équivalentes avec zéro et de voir en quoi elles sont fondamentalement différentes:
et
Bien que les réponses puissent ne pas avoir beaucoup de sens (avec des zéros), au moins elles peuvent être calculées . Avec null, le calcul n'est même pas possible .
la source
unknown
simplement inexistante, car dans le cas d'unNULL
pourcentage, il n'y a en réalité AUCUNE valeur numérique (pourcentage) ou valeur en pourcentage.Lorsque vous parlez à votre patron, utilisez seulement
0
pour zéro et?
pour null. Cela indique correctement que c'est un espace réservé pour quelque chose mais que vous ne savez pas ce que c'est.la source
Que dis-tu de ça:
0
est la réponse à "combien de liquide y a-t-il dans une bouteille vide?".NULL
est la réponse à "quel est le contenu d'une bouteille vide?".Ou si vous imaginez un homme sans enfant:
0
NULL
La différence fondamentale est qu’il
0
s’agit de la quantité mesurable, alors queNULL
de l’existence. Être une quantité,0
représente quelque chose , c'est-à-dire une quantité, c'est-à-0
dire presque0.000000001
une quantité (une quantité qui, dans les problèmes de la vie quotidienne, est en réalité indiscernablement proche de0
). Contrairement à cela neNULL
représente rien . En fait, il n'y a rien près deNULL
. Toute valeur (et expression) de variable est soitNULL
ou quelque chose.la source
C'est comme ça que je l'explique toujours avec succès:
0 est le nombre 0.
NULL est le nirvana, rien, nada, niente, non-existence, absence.
Les opérations arithmétiques définies sur NULL donnent toujours NULL en conséquence.
... a travaillé pour moi jusqu'à présent.
la source
Pourquoi ne pas commencer par poser la question "Pourquoi la valeur est-elle égale à NULL?" Cela pourrait vous aider à expliquer pourquoi un calcul peut être invalide.
Si vous effectuiez des mises à jour périodiques et que la nouvelle valeur ne se présentait pas (erreur réseau, par exemple), alors NULL pourrait signifier que le calcul ne peut pas être effectué et que l'ancienne valeur en pourcentage est périmée. Vous voudrez peut-être afficher un symbole indiquant que vous avez des données obsolètes, la mise à jour n'a pas eu lieu comme prévu.
La même chose pourrait être vraie pour une ancienne valeur manquante, mais j’ai du mal à comprendre comment une ancienne valeur peut être perdue (sauf s’il s’agit du premier calcul, ou si la batterie est morte et les données ont été perdues.) Mais vous voudrez peut-être afficher un symbole qui indique également cette condition.
Dans tous les cas, vous ne voulez pas que cela se produise:
Source de l'image
la source
OldValue=Null
vous ne connaissez pas l'ancienne valeur alors la différence est inconnue (Null)OldValue=0
Vous connaissez la valeur Old, elle est 0, la différence est donc Infinity (Null)S'il est important de faire la distinction entre ces deux éléments, enregistrez simplement la valeur Old
PreviousValue
et affichez-la quelque part.Modifier en fonction du commentaire ci-dessous:
Je voudrais simplement lui demander ce qu'il veut faire dans les situations suivantes et lui montrer des exemples de chacun d'eux. Puis et demandez-lui "Quelle valeur voulez-vous afficher pour ces derniers?"
N'en faites en aucune manière un problème informatique. C'est une question commerciale.
la source
J'ai eu beaucoup de succès avec «blank».
Avec des personnes qui comprennent l'algèbre de base (ou l'idée simple que vous pouvez attribuer une valeur à un symbole), l'idée d'une valeur «vide» semble plutôt simple et distincte d'une valeur nulle.
la source
NULL n'est pas une valeur, c'est un manque d'un. Le zéro est toujours une valeur. (même s'il peut être utilisé dans les cas où il ne peut pas être complètement évalué.
Par analogie (un bon moyen d'expliquer aux non-teckies;
Bien que dans ce cas les deux puissent avoir la même valeur (selon votre langage), ils sont très différents sur le plan conceptuel
la source
En réalité, peu importe que votre patron soit programmeur ou non. La question est conceptuelle et non technique.
Demandez-lui de supposer que vous avez une augmentation. Votre ancien salaire était 175k, mais votre nouveau salaire est inconnu. Puis demandez-lui quel pourcentage avez-vous reçu?
S'il est arithmétiquement invalide, suivez le processus jusqu'à ce qu'il puisse voir où se trouve le chaînon manquant.
la source
J'utilise le flip de pièces. Les têtes sont vraies, les queues sont fausses, et une main au-dessus de l’autre pour cacher la pièce est NULL. Si vous savez que la pièce est une tête, il est très facile de répondre à la question "Quel est le contraire de cette valeur?". Une main qui cache la pièce montre très facilement que la personne peut répondre si vous la laissez voir la valeur actuelle, mais comme vous ne le ferez pas, elle ne peut pas vous donner de réponse. Pour autant qu'ils sachent, vous n'avez même pas de pièce de monnaie sous la main!
la source
Dans un champ, NULL dit que je n'en ai aucune idée. il n'y a pas de données ici - son équivalent de blanc. Zéro (0) indique que je connais la valeur de ce champ avec exactement 0, par exemple, le nombre entier inférieur de 1.
Par exemple, je pourrais avoir une feuille de papier que je suis en train de taper dans le système informatique et qui indique combien chaque client doit. Le client A doit 50 USD, le client B doit 0 USD et le client C doit NULL (????), car le montant du client C doit à un numéro (une personne a tracé une ligne noire dessus et est illisible; ou une note indiquant que leur facture n’est pas encore prête). Je peux facilement dire que le client B doit 0 $ et je peux facilement dire que je ne sais pas ce que le client C doit. Je ne veux pas faire payer 0 $ C au client (car il se peut qu'il doive de l'argent)
la source
En supposant que nous n'entrions pas dans des choses spécifiques à la langue comme:
La différence est que 0 est une valeur numérique où NULL n'est pas. C'est comme une cellule vide sur une feuille de papier graphique. Une cellule peut contenir un "0", mais elle peut aussi être vide. Null est toujours une valeur, mais vous l'avez considérée comme spéciale. Par exemple, si vos cellules étaient maintenant des caractères, vous pouvez utiliser la cellule vide comme espace et une cellule nulle n'est plus possible à moins que vous ne désigniez ou ne créiez un caractère comme cas spécial.
Ce que signifie null dépend de la façon dont les données sont interprétées:
la source
NULL == 0
fonctionne bien quand vous avez affaire à des pointeurs nuls dans C et al. Si vous essayez d'expliquer l'idée à votre chef non programmeur en leur montrant du code, vous vous y trompez.Je lancerais NVL Check et si l’un des paramètres est NULL, j’afficherais la chaîne "N / A" (ne retourne pas "0" car ce n’est tout simplement pas vrai!).
Du point de vue du gestionnaire, cela aurait l'air plus professionnel que d'afficher la valeur NULL, ce qui donne l'impression que vous avez un bogue (ce qui n'est bien sûr pas le cas - mais c'est ainsi que cela ressemble à un non-ingénieur) .
la source
On dirait que dans son esprit, ne pas avoir une nouvelle valeur ne signifie pas qu’elle est inconnue; c'est la même chose que l'ancienne valeur. Vous pouvez coder cela en conséquence sans expliquer null, car dans son esprit, ce n'est jamais nul.
Au lieu d'argumenter sur les valeurs NULL, assurez-vous simplement que cela ne crée pas d'autres problèmes. Quelles sont les conséquences d'avoir des données trop anciennes? Quand quelqu'un voit un changement de 0%, est-ce qu'ils appuient sur le bouton panique? Cela faussera-t-il l'analyse ou les agrégats au fil du temps?
Je ne pense tout simplement pas qu'il ait besoin d'un tutoriel de programmation informatique, mais ce serait bien s'il savait ce qu'est un zéro et pose la bonne question à la place.
la source
Si le
old value
est nul, le résultat des équations doit à juste titre être nul. En effet, null n'est pas un nombre, cela signifie une valeur inconnue. Par conséquent, le calcul ne peut pas continuer.Bien sûr, votre équation échoue également si
old value = 0
vous ne pouvez pas diviser par zéro.Généralement, vous gérez ces choses avec une déclaration de cas qui vous indiquera le chemin que vous voulez montrer. Donc, si vous voulez que le résultat soit nul lorsque vous ne pouvez pas calculer (comme avec un zéro ou un zéro, vous feriez alors une instruction case comme
la source
Une bonne discussion sur les analogies pour expliquer les aspects mécaniques d’un symbole nul par rapport à d’autres valeurs; Cependant, je pense que le point essentiel de cette question, du point de vue du responsable, consiste à exprimer correctement les résultats dans l'interface utilisateur, ce qui représente les limites significatives de la formule de changement de perecnt telle qu'elle est appliquée à leur problème spécifique.
Dans le cas du pourcentage de forum modifié, deux éléments doivent être représentés: lorsque quelque chose est mesuré pour la première fois et quand rien n'est mesuré pour un aspect particulier.
Lorsqu'un élément est mesuré pour la première fois (oldValue === NULL), le pourcentage de variation n'est pas applicable. et pourrait / devrait explicitement être noté que c'est la mesure initiale pour ce cycle de mesure.
Lorsque rien n'est mesuré (newValue === NULL), le pourcentage de changement obtenu est en réalité la valeur de zéro (en supposant que la valeur non-nulle du cycle précédent). Zéro est généralement la réponse appropriée à la formule dans ce cas. Il n'y avait aucune mesure dans ce cycle le plus récent, et donc aucun changement mesuré. Cela ne signifie pas que cela n’a pas changé, mais que rien n’a été mesuré, enregistré ou communiqué en ce qui concerne cet aspect.
la source
Ils comprennent certainement l’idée de mettre "N / A" sur un formulaire alors qu’ils veulent dire "non disponible". Par exemple, pour répondre à la question "Quel âge a Benjamin Franklin?" les réponses 0 et N / A sont évidemment différentes (et la dernière est correcte). De même, les réponses 0 et NULL sont différentes.
la source
Si je devais expliquer ces concepts à quelqu'un, je dessinerais deux boîtes.
la source
La différence entre 0 et null correspond à la différence entre avoir un compte bancaire avec un solde 0 et ne pas avoir de compte bancaire du tout.
la source
Ceci est mieux expliqué avec les pointeurs.
Pour cette raison, si votre langue ne garde pas trace des variables NULL pour vous, vous utiliserez ce qui était déjà là . Cela peut entraîner des débordements, une corruption des piles ou d’autres effets indésirables.
Si la langue ne garder une trace des variables NULL, alors il aura un cas déclaré pour manipuler ce. IE traite NULL comme étant égal à zéro, déclenche une exception, traite comme nop, etc.
Pour démontrer à votre patron, procurez-vous quelques morceaux de papier usagé.
la source
À en juger par la variété des réponses à cette question, on peut conclure ce que nous savons déjà: null peut vouloir dire beaucoup de choses.
Soit cela signifie que les données sont:
Pour cette raison, parmi de nombreuses autres, il est souvent utile de définir une structure de données qui encapsule la signification de la valeur null (par exemple une classe optionnelle).
la source
La personne qui a accepté cela n'a aucun sens de l'humour. FWIW Je suis un architecte moi-même.
Null est le vide. Selon la légende, il y a 17 saveurs (significations possibles) de Null, notamment "Je ne sais pas", "Ils n'ont pas dit" et "Quelqu'un a cassé ça". Personne ne sait pourquoi, à l'exception des DBA et des architectes qui regardent d'un mauvais œil de simples programmeurs. Ils sourient poliment aux chefs et agitent leurs langues, profondément préoccupés par une sagesse incroyablement complexe qui doit être telle, et qui est profondément importante mais pas très claire - car les chefs donnent une performance importante à la DBA et à l’architecte. Un chèque de paie. Même ainsi, les Nulls ne disent jamais leurs secrets. Ce sont des trous noirs de vide. Un null n'égale jamais un autre nul car chaque vide est vide d'égalité et refuse d'admettre qu'il pourrait ne pas être tout le vide qui existe. Ceci est bien sûr une conjecture car aucun individu qui se respecte ne pourrait jamais l’admettre. Parfois, les valeurs nulles absorbent de grandes quantités de données réelles dans leur (). Cela s'appelle un bogue, mais c'est en réalité le vide de l'esprit du programmeur qui oublie les valeurs nulles. Donc, vous voyez qu'ils se reproduisent parfois. Mais comment ou pourquoi est toujours vite oublié. () est parfois un signe de null ou son cousin nil mais paradoxalement rarement un bug.
Zéro est une quantité définie de quelque chose. Les zéros sont beaucoup plus heureux que les nuls. Les zéros sont simplement paresseux et n'ajoutent pas grand chose au résultat.
Pour les réponses ennuyeuses et très anciennes, Null est une représentation des "informations manquantes et inapplicables" EF Codd, créateur de SQL.
Codd a également inventé la 3ème forme normale qui est appliquée à l’esprit des jeunes informaticiens comme une forme de torture préliminaire. Une fois maîtrisé, il est complètement ignoré. Des choses similaires se produisent lorsque la conception orientée objet est introduite. Et comme nous ne sommes jamais heureux de laisser faire cela seul, un déséquilibre impédance s’ajoute à la situation.
la source