Maison > base de données > tutoriel mysql > IN vs ANY dans PostgreSQL : quelles sont les principales différences et quand dois-je les utiliser ?

IN vs ANY dans PostgreSQL : quelles sont les principales différences et quand dois-je les utiliser ?

Susan Sarandon
Libérer: 2025-01-19 11:32:11
original
374 Les gens l'ont consulté

Les principales différences et scénarios d'utilisation de IN et ANY dans PostgreSQL

IN vs. ANY in PostgreSQL: What are the Key Differences and When Should I Use Each?

Comprendre les structures IN et ANY

Dans PostgreSQL, IN et ANY sont tous deux des constructions qui effectuent des comparaisons d'ensembles pour déterminer si une valeur existe dans un ensemble.

Équivalence logique

Logiquement, IN équivaut à = ANY. Cependant, leur syntaxe et leurs fonctionnalités diffèrent.

Variations grammaticales

IN et ANY ont chacun deux variantes de syntaxe :

  • IN accepte un tableau de valeurs ou une liste de valeurs séparées par des virgules.
  • ANY accepte un ensemble de valeurs ou un tableau de valeurs.

Différences fonctionnelles

  1. Valeur transmise : IN attend une collection ou une liste de valeurs, tandis que ANY attend un tableau (le type de tableau réel).
  2. Utilisation de l'index : IN avec une collection peut utiliser un index, tandis que ANY avec un tableau peut ne pas utiliser d'index dans certains cas.
  3. Plan de requête : IN et ANY produisent des plans de requête différents dans certaines circonstances.

AVANTAGES DE TOUT

ANY offre une plus grande flexibilité car il peut être combiné avec différents opérateurs, dont =. Par exemple :

<code class="language-sql">SELECT 'foo' LIKE ANY('{FOO,bar,%oo%}');</code>
Copier après la connexion

Échelle et performances

Pour un grand nombre de valeurs, l'utilisation d'ensembles pour IN et ANY peut améliorer les performances.

Inverser et exclure

Pour rechercher des lignes dont les valeurs ne sont pas dans le tableau donné :

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

Toutes les expressions du bloc de code ci-dessus sont équivalentes et excluront les lignes avec les valeurs d'identifiant 1 et 2.

Inclusion des valeurs NULL

Par défaut, les lignes avec l'identifiant NULL seront exclues. Pour les inclure, utilisez l'expression suivante :

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

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