Operatoren für den Attributvergleich

Zu den Operatoren für den Attributvergleich zählen: „=“, „<“, „>“, „=<“, „=>“ und „<>“.

In den folgenden Beispielen wird der Operator „=“ verwendet; allerdings können alle Attributoperatoren ersetzt werden.

Beispiel 1:

SELECT * FROM table WHERE city='Austin'

Wenn der Datenquellenanbieter den Operator „=“ unterstützt, wird die gesamte Anweisung an den Datenquellenanbieter delegiert.

Wenn der Datenquellenanbieter den Operator „=“ nicht unterstützt, fordert Spectrum Spatial den Datenquellenanbieter dazu auf, die ausgewählte Klausel ohne die WHERE-Klausel auszuführen.

SELECT * FROM table
Spectrum Spatial führt die gesamte Abfrage mithilfe der Ergebnisse der SELECT-Klausel des Datenanbieters aus.
SELECT * FROM <results from the delegation> WHERE city='Austin'
Beispiel 2:
SELECT pop FROM table WHERE city='Austin'

Wenn der Datenquellenanbieter den Operator „=“ unterstützt, wird die gesamte Anweisung an den Datenquellenanbieter delegiert.

Wenn der Datenquellenanbieter den Operator „=“ nicht unterstützt, wird nur ein Teil der Abfrage delegiert, und zwar wie folgt:

SELECT pop,city FROM table
Folgendes wird von Spectrum Spatial ausgeführt:
SELECT pop FROM <results from the delegation> WHERE city='Austin'

Beispiel 3:

SELECT pop FROM table WHERE UPPER(city)='Austin'
Durch die Funktion „UPPER“ wird verhindert, dass Spectrum Spatial die Abfrage an den Datenquellenanbieter delegiert, selbst dann, wenn der Datenquellenanbieter den Operator „=“ unterstützt. Grund dafür ist Regel 5 der SELECT-Klausel, nach der Funktionen und Operatoren nicht an Datenquellenanbieter delegiert werden können. Dieses Beispiel wird also komplett von Spectrum Spatial verarbeitet. Der Datenquellenanbieter wird nur um die zu bearbeitenden Daten gebeten, und zwar wie folgt:
SELECT pop,city FROM table
Folgendes wird von Spectrum Spatial ausgeführt:
SELECT pop FROM <results from the delegation> WHERE UPPER(city)='Austin'

Beispiel 4:

SELECT state FROM table WHERE pop/area=5000
Dieses Beispiel mit dem Operator „/“ bedeutet, dass die WHERE-Klausel nicht delegiert werden kann, wenn eine Funktion enthalten ist. Dieses Beispiel wird also komplett von Spectrum Spatial verarbeitet. Der Datenquellenanbieter wird nur um die zu bearbeitenden Daten gebeten, und zwar wie folgt:
SELECT state, pop, area FROM table
Folgendes wird von Spectrum Spatial ausgeführt:
SELECT pop FROM <results from the delegation> WHERE pop/area=5000