Abfrageausdrücke werden in ArcGIS verwendet, um eine Teilmenge von Features und Tabellendatensätzen auszuwählen. Abfrageausdrücke in ArcGIS richten sich nach Standard-SQL-Ausdrücken. Diese Syntax wird beispielsweise mit dem Werkzeug Nach Attributen auswählen oder dem Dialogfeld Abfrage-Manager verwendet, um eine Layer-Definitionsabfrage zu erstellen.
In diesem Thema 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
Der erste Teil des SQL-Ausdrucks SELECT * FROM bildet den ersten Teil des Ausdrucks und wird automatisch angegeben.
Für Abfrageausdrücke wird die allgemeine Form verwendet, die einer Select * From <Layer oder Dataset> Where-Klausel folgt (beispielsweise dem Teil des SQL-Ausdrucks, der nach SELECT * FROM <Layer-Name> WHERE steht).
Das allgemeine Format für ArcGIS-Abfrageausdrücke lautet:
<Field_name> <Operator> <Wert oder Zeichenfolge>
Für zusammengesetzte Abfragen wird das folgende Format verwendet:
<Field_name> <Operator> <Wert oder Zeichenfolge> <Konnektor> <Field_name> <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, z. B. DISTINCT, ORDER BY oder 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). Beispiel:
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 je nach 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 "Catherine Smith" und "Katherine Smith" gefunden:
OWNER_NAME LIKE '_atherine smith'
Die oben beschriebenen Platzhalter können für alle dateibasierten Daten oder ArcSDE-Geodatabases verwendet werden. Beim Abfragen von Personal-Geodatabases verwenden Sie als Platzhalter für eine beliebige Anzahl von Zeichen ein Sternchen (*), für genau ein Zeichen ein Fragezeichen (?).
Platzhalterzeichen sind in den Dialogfeldern Nach Attributen auswählen und Abfrage-Manager 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.
Wenn die Zeichenfolge ein einzelnes Anführungszeichen enthält, müssen Sie zunächst ein weiteres Anführungszeichen als Escape-Zeichen einfügen. Beispiel:
NAME = 'Alfie''s Trough'
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.
Beispiel:
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.
Beispiel:
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 vorhandenen Ausdruck hervorheben und anschließend auf die Schaltfläche Klammern klicken, um den Ausdruck einzuschließen. zum Einschließ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 Datensyntax 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.