J’ai un formulaire sur un site Web qui a beaucoup de différents domaines. Certains champs sont facultatifs, tandis que certains sont obligatoires. Dans mon PB, j’ai une table qui contient toutes ces valeurs, est il mieux pratiquer pour insérer une valeur NULL ou une chaîne vide dans les colonnes de DB où l’utilisateur n’a pas mis n’importe quelles données ?
Réponses
Trop de publicités?En utilisant NULL
vous pouvez faire la distinction entre mis "pas de données" et de "mettre de données vide".
Certains plus de différences:
Un
LENGTH
deNULL
estNULL
,LENGTH
d'une chaîne vide est -0
.NULL
s sont classés avant les chaînes vides.COUNT(message)
comptera les cordes à vide, mais pasNULL
s-
Vous pouvez rechercher une chaîne vide à l'aide d'une variable liée, mais pas pour un
NULL
. Cette requête:SELECT * FROM mytable WHERE mytext = ?
n'égaleront jamais une
NULL
enmytext
, quelle que soit la valeur de vous transmettre de la part du client. Pour correspondreNULL
s, vous aurez à utiliser une autre requête:SELECT * FROM mytable WHERE mytext IS NULL
Une chose à considérer, si vous jamais plan sur bases de données, de commutation est que Oracle ne supporte pas les chaînes vides. Ils sont automatiquement convertis avec la valeur NULL, et vous ne pouvez pas interroger pour eux à l’aide des clauses comme `` .
Une chose à garder à l’esprit est que NULL pourrait rendre votre codepaths beaucoup plus difficile. En Python par exemple la plupart des bases de données adaptateurs / ORM carte à
.
Si des choses comme :
risque d’entraîner « Hello, aucun Joe Doe ! » Pour l’éviter, il faut quelque chose comme ce code :
Qui peut rendre les choses beaucoup plus complexes.
Je ne sais pas quelles sont les bonnes pratiques serait ici, mais je voudrais généralement commis une erreur en faveur de l'null sauf si vous voulez null pour signifier quelque chose de différent de vide-chaîne, et l'entrée de l'utilisateur correspond à votre vide-définition de la chaîne.
Notez que je suis en train de dire que VOUS devez définir la façon dont vous voulez qu'ils soient différents. Parfois, il est logique de les avoir différents, parfois ça ne marche pas. Si non, il suffit de choisir un et de s'y tenir. Comme je l'ai dit, j'ai tendance à privilégier la valeur NULL, la plupart du temps.
Oh, et garder à l'esprit que si la colonne est null, le résultat est moins susceptible d'apparaître dans pratiquement n'importe quelle requête qui sélectionne (a une clause where en SQL) basés sur colonne, sauf si la sélection est pour une colonne null, bien sûr.