Maison > base de données > tutoriel mysql > IN ou ANY dans PostgreSQL : quand devez-vous utiliser chaque opérateur ?

IN ou ANY dans PostgreSQL : quand devez-vous utiliser chaque opérateur ?

Barbara Streisand
Libérer: 2025-01-19 11:37:06
original
281 Les gens l'ont consulté

IN vs. ANY in PostgreSQL: When Should You Use Each Operator?

Comparaison des opérateurs IN et ANY dans PostgreSQL

Aperçu

PostgreSQL fournit deux structures similaires, IN et ANY, pour faire correspondre les valeurs avec des ensembles ou des listes. Bien que leur fonctionnalité logique soit la même, il existe des différences significatives en termes de syntaxe et d’utilisation.

Syntaxe et correspondance

DANS :

  • Accepte une liste de valeurs séparées par des virgules.
  • est équivalent à = ANY appliqué à l' ensemble de ces valeurs.

TOUT :

  • peut accepter à la fois set et array.
  • En plus de l'opérateur d'égalité (=), un plus large éventail d'opérateurs est accepté.

Définir la correspondance

IN et ANY sont équivalents pour faire correspondre les valeurs aux ensembles. Par exemple :

<code class="language-sql">SELECT * FROM table WHERE id IN (1, 2, 3);
SELECT * FROM table WHERE id = ANY('{1, 2, 3}');</code>
Copier après la connexion

Correspondance de tableaux

Cependant, il existe une variante de syntaxe supplémentaire de ANY qui prend en charge la correspondance array. Cela vous permet de comparer la valeur au type de données réel du tableau :

<code class="language-sql">SELECT * FROM table WHERE id = ANY(ARRAY[1, 2, 3]);</code>
Copier après la connexion

Optimisation des requêtes

Dans certains cas, le choix entre IN et ANY affecte l'optimisation des requêtes. Pour les grandes collections, vous pouvez obtenir de meilleures performances en transmettant la collection à l'aide d'une structure IN.

Autres fonctionnalités de TOUT

  • Polyvalence : Prend en charge plusieurs opérateurs tels que LIKE ou >.
  • Correspondance négative : Vous pouvez utiliser l'opérateur NOT pour exclure des valeurs d'un tableau (par exemple, id ALL (ARRAY[1, 2])).
  • Gestion NULL : Par défaut, les valeurs NULL ne correspondent pas aux expressions ANY ou IN. Pour inclure des valeurs NULL, utilisez IS NOT TRUE ou IS DISTINCT FROM.

Exemple

Pour démontrer ces différences, considérons l'exemple suivant :

<code class="language-sql">SELECT * FROM table WHERE id IN ('1', '2', NULL, 3);
SELECT * FROM table WHERE id = ANY('{1, 2, NULL, 3}');</code>
Copier après la connexion

L'expression IN exclura les lignes avec des valeurs NULL, tandis que l'expression ANY les inclura. De plus, les expressions ANY peuvent utiliser des opérateurs spécifiques au tableau, tels que id > ANY('{1, 2, 3}').

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal