Erstellen von Abfrageausdrücken
Abfrageausdrücke werden in ArcGIS verwendet, um eine Teilmenge von Features und Tabellendatensätzen auszuwählen. Die Syntax von Abfrageausdrücken in ArcGIS entspricht der von Standard-SQL-Ausdrücken. Diese Syntax verwenden Sie z. B. für das Werkzeug Nach Attributen auswählen oder im Dialogfeld Abfrage-Generator, um eine Layer-Definitionsabfrage zu definieren.
In diesem Abschnitt wird beschrieben, wie grundlegende Ausdrücke mit WHERE-Klauseln erstellt werden. Es empfiehlt sich insbesondere als Einstieg in die Arbeit mit SQL. Ausführliche Informationen finden Sie unter SQL-Referenz für in ArcGIS verwendete Abfrageausdrücke.
Einfache SQL-Ausdrücke
SELECT * FROM stellt den ersten Teil eines SQL-Ausdrucks dar und wird automatisch vorgegeben.
Für Abfrageausdrücke wird das allgemeine Format verwendet, das auf eine Select * From <Layer oder Dataset> Where-Klausel folgt (z. B. der Teil des SQL-Ausdrucks, der auf SELECT * FROM <Layer-Name> WHERE folgt).
Das allgemeine Format für ArcGIS-Abfrageausdrücke lautet:
< Feldname > < Operator > < Wert oder Zeichenfolge >
Für zusammengesetzte Abfragen wird das folgende Format verwendet:
< Feldname > < Operator > < Wert oder Zeichenfolge > < Konnektor > < Feldname > < Operator > < Wert oder Zeichenfolge > ...
Optional kann die Reihenfolge von Operationen in zusammengesetzten Abfragen mit Klammern () definiert werden.
Da Sie alle Spalten auswählen, können Sie den SELECT-Ausdruck nicht so einschränken, dass nur einige Spalten in der entsprechenden Tabelle zurückgegeben werden. Dies liegt daran, dass die Syntax "SELECT *" hart kodiert ist. Aus diesem Grund können Schlüsselwörter wie DISTINCT, ORDER BY und GROUP BY nicht in einer SQL-Abfrage in ArcGIS verwendet werden, sondern lediglich in Unterabfragen. Informationen zu Unterabfragen finden Sie unter SQL-Referenz für in ArcGIS verwendete Abfrageausdrücke.
In den meisten ArcGIS-Dialogfeldern, in denen Sie einen Abfrageausdruck erstellen, wird der Name des Layers oder der Tabelle vorgegeben (Sie können ihn aber auch aus einer Dropdown-Liste auswählen). Beispiele:
Der nächste Teil des Ausdrucks ist die WHERE-Klausel. Diese müssen Sie selbst erstellen. Eine grundlegende WHERE-Klausel in SQL kann wie folgt aussehen:
STATE_NAME = 'Alabama'
Hiermit werden die Features ausgewählt, die im Feld STATE_NAME den Wert "Alabama" enthalten.
SQL-Syntax
Die verwendete SQL-Syntax variiert abhängig von der Datenquelle. Jedes DBMS verwendet einen eigenen SQL-Dialekt.
Zur Abfrage dateibasierter Daten, z. B. aus File-Geodatabases, Coverages, Shapefiles, INFO-Tabellen, dBASE-Tabellen sowie von CAD- und VPF-Daten, verwenden Sie den ArcGIS-SQL-Dialekt, der einen Teil der SQL-Funktionen unterstützt. Um Personal-Geodatabases abzufragen, verwenden Sie die Microsoft Access-Syntax. Um ArcSDE-Geodatabases abzufragen, verwenden Sie die SQL-Syntax des zugrunde liegenden DBMS (entweder Oracle, SQL Server, DB2, Informix oder PostgreSQL).
In den ArcGIS-Dialogfeldern, in denen Sie SQL-WHERE-Klauseln erstellen, erhalten Sie Hilfestellung, damit Sie die richtige Syntax für die Datenbankabfrage verwenden. Die richtigen Feldnamen und -werte mit den entsprechenden Trennzeichen werden angezeigt. Außerdem werden die richtigen SQL-Schlüsselwörter und -Operatoren für Sie ausgewählt.
Suchen von Zeichenfolgen
Zeichenfolgen müssen stets in einfache Anführungszeichen eingeschlossen werden. Beispiel:
"STATE_NAME" = 'California'
Außer in Abfragen von Personal-Geodatabase-Feature-Classes und -Tabellen wird bei Zeichenfolgen in Ausdrücken zwischen Groß- und Kleinschreibung unterschieden. Um eine Suche in anderen Datenformaten durchzuführen, bei der die Groß- bzw. Kleinschreibung nicht berücksichtigt wird, können Sie die Groß- und Kleinschreibung aller Werte mit einer SQL-Funktion vereinheitlichen. Verwenden Sie für Dateidatenquellen wie Geodatabases oder Shapefiles die Funktion UPPER oder LOWER.
Durch den folgenden Ausdruck werden beispielsweise Kunden ausgewählt, deren Nachname als "Jones" oder "JONES" gespeichert ist:
UPPER("LAST_NAME") = 'JONES'
Für andere Datenquellen stehen ähnliche Funktionen zur Verfügung. Bei Personal-Geodatabases sind dies z. B. die Funktionen UCASE und LCASE, mit denen dasselbe Ergebnis erzielt wird.
Um nach einer Teilzeichenfolge zu suchen, verwenden Sie den Operator LIKE (anstelle des Operators "Gleich"). Durch diesen Ausdruck werden z. B. die US-Bundesstaaten Mississippi und Missouri ausgewählt:
"STATE_NAME" LIKE 'Miss%'
Das Prozentzeichen (%) kann für eine beliebige Anzahl Zeichen einschließlich keinem Zeichen stehen. Wenn Sie bei der Suche ein Platzhalterzeichen verwenden möchten, das für ein einzelnes Zeichen steht, verwenden Sie einen Unterstrich (_).
Durch den folgenden Ausdruck werden beispielsweise die Zeichenfolgen "Catrin Schmidt" und "Katrin Schmidt" gefunden:
"OWNER_NAME" LIKE '_atherine smith'
Die oben beschriebenen Platzhalter können für alle dateibasierten Daten oder ArcSDE-Geodatabases verwendet werden. Zum Abfragen von Personal-Geodatabases verwenden Sie das Sternchen (*) als Platzhalter für eine beliebige Anzahl von Zeichen und das Fragezeichen (?) für genau ein Zeichen.
Platzhalterzeichen sind in den Dialogfeldern Nach Attributen auswählen und Abfrage-Generator als Schaltflächen verfügbar. Sie können auf die Schaltfläche klicken, um das Platzhalterzeichen in den gerade erstellten Ausdruck einzufügen. Es werden nur die Platzhalterzeichen angezeigt, die für die Datenquelle des abgefragten Layers oder der abgefragten Tabelle in Frage kommen.
Wenn Sie ein Platzhalterzeichen in einer Zeichenfolge mit dem Operator "Gleich" (=) verwenden, wird das Zeichen als Teil der Zeichenfolge und nicht als Platzhalter angesehen.
Sie können die Operatoren "Größer als" (>), "Kleiner als" (<), "Größer gleich" (>=), "Kleiner gleich" (<=) und BETWEEN verwenden, um Zeichenfolgenwerte basierend auf der Sortierreihenfolge auszuwählen. Durch diesen Ausdruck wird beispielsweise in einem Coverage nach allen Städten gesucht, deren Namen mit den Buchstaben M bis Z beginnen:
"CITY_NAME" >= 'M'
Der Ungleich-Operator (<>) kann ebenfalls in Abfragen verwendet werden.
Das Schlüsselwort NULL
Verwenden Sie das Schlüsselwort NULL zum Auswählen von Features und Datensätzen, die für das angegebene Feld Nullwerte aufweisen. Dem Schlüsselwort NULL geht stets IS oder IS NOT voraus.
Mit der folgenden Abfrage werden beispielsweise Städte gesucht, deren Einwohnerzahl für das Jahr 1996 nicht eingegeben wurde:
"POPULATION96" IS NULL
Sie können auch mit der folgenden Abfrage Städte suchen, deren Einwohnerzahl für das Jahr 1996 eingegeben wurde:
"POPULATION96" IS NOT NULL
Suchen von Zahlen
In Abfragen nach Zahlenwerten können Sie die Operatoren "Gleich" (=), "Ungleich" (<>), "Größer als " (>), "Kleiner als" (<), "Größer oder gleich" (>=), "Kleiner oder gleich" (<=) und "BETWEEN" (Zwischen) verwenden.
Beispiele:
"POPULATION96" >= 5000
In Auflistungen numerischer Werte wird unabhängig von den Ländereinstellungen stets ein Dezimalpunkt verwendet. Ein Komma darf in einem Ausdruck weder als Dezimal- noch als Tausendertrennzeichen verwendet werden.
Berechnungen
Berechnungen können mit den folgenden arithmetischen Operatoren in Ausdrücke einbezogen werden: +, -, *, und /.
Berechnungen können sich aus Feldern und Zahlen zusammensetzen.
Beispiele:
"AREA" >= "PERIMETER" * 100
Berechnungen können darüber hinaus auch zwischen Feldern ausgeführt werden.
Um z. B. Länder zu suchen, die eine Bevölkerungsdichte kleiner oder gleich 25 Menschen pro Quadratmeile aufweisen, können Sie den folgenden Ausdruck verwenden:
"POP1990" / "AREA" <= 25
Operator-Priorität
Bei der Auswertung von Ausdrücken werden Standardregeln für die Operator-Priorität angewendet. Beispielsweise wird der in Klammern eingeschlossene Teil eines Ausdrucks vor dem Teil ausgewertet, der nicht in Klammern eingeschlossen ist.
Das Beispiel
"HOUSEHOLDS" > "MALES" * "POP90_SQMI" + "AREA"
wird anders ausgewertet als
"HOUSEHOLDS" > "MALES" * ("POP90_SQMI" + "AREA")
Sie können die Klammern per Mausklick einfügen und dann den in die Klammern einzuschließenden Ausdruck eingeben. Sie können aber auch den Ausdruck hervorheben und anschließend auf die Schaltfläche Klammern klicken, um den Ausdruck einzuschließen.
Kombinieren von Ausdrücken
Komplexe Ausdrücke können durch die Kombination mehrerer Ausdrücke durch die Operatoren AND und OR erstellt werden.
Wenn Sie beispielsweise alle Häuser mit mehr als 1.500 Quadratfuß Wohnfläche und einer Garage für drei oder mehr Autos auswählen möchten, verwenden Sie folgenden Ausdruck:
"AREA" > 1500 AND "GARAGE" > 3
Bei Verwendung des Operators OR muss mindestens eine der Seiten des durch OR getrennten Ausdrucks wahr sein, damit der Datensatz ausgewählt wird.
Beispiel:
"RAINFALL" < 20 OR "SLOPE" > 35
Verwenden Sie den Operator NOT zu Beginn eines Ausdrucks, um Features oder Datensätze zu suchen, die dem angegebenen Ausdruck nicht entsprechen.
Beispiel:
NOT "STATE_NAME" = 'Colorado'
NOT-Ausdrücke können mithilfe von AND und OR kombiniert werden.
Mit dem folgenden Ausdruck werden beispielsweise alle Bundesstaaten in Neuengland außer Maine ausgewählt:
"SUB_REGION" = 'New England' AND NOT "STATE_NAME" = 'Maine'
Unterabfragen
Eine Unterabfrage ist eine in einer anderen Abfrage geschachtelte Abfrage. Unterabfragen werden nur von Geodatabase-Datenquellen unterstützt. Sie können sie verwenden, um Prädikate oder Aggregatfunktionen einzusetzen oder um Daten mit Werten in einer anderen Tabelle zu vergleichen. Durch die folgende Abfrage werden beispielsweise nur die Länder abgerufen, die nicht in der Tabelle "indep_countries" aufgeführt sind:
"COUNTRY_NAME" NOT IN (SELECT "COUNTRY_NAME" FROM indep_countries)
Weitere Informationen finden Sie unter SQL-Referenz für in ArcGIS verwendete Abfrageausdrücke.
Abfragen von Datumsangaben
In den ArcGIS-Dialogfeldern, in denen Sie SQL-WHERE-Klauseln erstellen, erhalten Sie Hilfestellung, damit Sie die richtige Syntax für die Datenbankabfrage verwenden. In der Regel müssen Sie nur auf das Feld, den Operator und den Wert klicken, um die richtige Syntax zu erhalten.