In (List)-Operator

IN (List) ist ein boolescher räumlicher Operator, der „True“ zurückgibt, wenn mindestens einer der Werte in der Liste ermittelt wird.

Beispiel 1:

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

Wenn der Datenquellenanbieter IN (List) unterstützt, wird die gesamte Abfrage an den Datenquellenanbieter delegiert.

Wenn der Datenquellenanbieter IN (List) nicht unterstützt, wird nur ein Teil der Abfrage delegiert:

SELECT state, pop FROM table 

Spectrum Spatial führt die gesamte Abfrage mithilfe der Ergebnisse des Datenanbieters aus:

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

Beispiel 2:

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

Diese Abfrage verstößt gegen die Regel, laut der Funktionen (in diesem Fall LOWER()) und Operatoren in einer nicht aggregierenden Abfrage nicht an den Datenanbieter delegiert werden können. Der Datenquellenanbieter stellt anschließend die nicht formatierten Rückgabewerte aus der folgenden Abfrage bereit:

SELECT state, pop FROM table 

Spectrum Spatial führt die gesamte Abfrage mithilfe der Ergebnisse des Datenquellenanbieters aus:

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

Beispiel 3:

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

Wenn der Datenquellenanbieter IN mit einem einzelnen Argument in der Liste nicht unterstützt, kann keine Delegierung erfolgen. IN wird in den Operator „=“ umgewandelt: siehe Operatoren für den Attributvergleich. Der Datenquellenanbieter muss „=“ unterstützen, damit die Abfrage delegiert werden kann.

SELECT pop FROM table WHERE state = 'ny'