Lorsque vous traitez des valeurs de chaîne dans PostgreSQL, assurez-vous de vérifier les valeurs NULL (indiquant aucune donnée) et les chaînes vides (indiquées par ''). Une approche courante consiste à utiliser la fonction de fusion :
<code class="language-sql">coalesce(stringexpression, '')=''</code>
Cependant, cette approche peut s'avérer verbeuse et inefficace, surtout si l'expression à vérifier est complexe.
Une solution plus efficace et plus concise consiste à utiliser des opérateurs de comparaison :
<code class="language-sql">(stringexpression = '') IS NOT FALSE</code>
Cette expression vérifie si stringexpression est égale à la chaîne vide ou NULL. Le résultat sera :
Cette approche fonctionne particulièrement bien pour les types de caractères tels que char(n), où une chaîne vide ne peut pas être distinguée d'une chaîne composée uniquement d'espaces.
Pour affirmer le contraire, il suffit d'utiliser :
<code class="language-sql">stringexpression <> ''</code>
Le type de données char(n) nécessite une attention particulière. De par leur conception, les chaînes vides dans char(n) sont complétées par des espaces pour atteindre la longueur spécifiée. Par conséquent, le test ci-dessus fonctionne également pour char(n).
Pour illustrer ces méthodes, considérons le tableau suivant :
<code class="language-sql">SELECT * FROM test_data( VALUES ('foo', 'bar', NULL, '', ' ') );</code>
La réalisation de divers tests produit les résultats suivants :
表达式 | foo | bar | NULL | ||
---|---|---|---|---|---|
stringexpression = '' | False | False | NULL | True | True |
(stringexpression = '') IS NOT FALSE | False | False | True | True | True |
(stringexpression '') IS NOT TRUE | True | True | False | False | False |
coalesce(stringexpression, '') = '' | False | False | True | False | True |
L'approche efficace et concise décrite ci-dessus fournit une solution puissante et fiable lors de la vérification des valeurs NULL ou nulles dans PostgreSQL. En utilisant des opérateurs de comparaison, vous pouvez obtenir les résultats souhaités sans avoir à utiliser des expressions maladroites.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!