Opérateur In (List)

IN (List) est un opérateur spatial booléen qui renvoie true si au moins l'une des valeurs de la liste est trouvée.

Exemple 1 :

SELECT pop FROM table WHERE state IN ('nc', 'ny', 'ca')

Si le fournisseur de données source prend en charge IN (List), la requête toute entière lui est déléguée.

Si le fournisseur de données source ne prend pas en charge IN (List), seule une partie de la requête est déléguée :

SELECT state, pop FROM table 

Spectrum Spatial exécute la requête toute entière, en utilisant les résultats du fournisseur de données :

SELECT pop FROM <results from the delegation> WHERE state IN ('nc', 'ny', 'ca')

Exemple 2 :

SELECT pop FROM table WHERE LOWER(state) IN ('nc', 'ny', 'ca')

Cette requête viole la règle selon laquelle les fonctions, dans ce cas LOWER(), et les opérateurs d'une requête non agrégée ne peuvent pas être délégués au fournisseur de données. Ensuite, le fournisseur de source de données, fournit le renvoie brut à partir de cette requête :

SELECT state, pop FROM table 

Spectrum Spatial exécute la requête toute entière, en utilisant les résultats à partir du fournisseur de source de données :

SELECT pop FROM <results from the delegation> WHERE LOWER(state) IN ('nc', 'ny', 'ca')

Exemple 3 :

SELECT pop FROM table WHERE state IN ('ny')

Si le fournisseur de source de données ne prend pas en charge par un seul argument dans la liste, il ne peut pas être délégué. Il est converti en un opérateur « = »: reportez-vous à la section Opérateurs de comparaison d'attribut. Pour que la requête soit déléguée, le fournisseur de données source doit prendre en charge '='.

SELECT pop FROM table WHERE state = 'ny'