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
Susan Sarandonoriginal
2025-01-19 11:32:11403parcourir

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>

É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>

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>

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!

Déclaration:
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