SQL-Referenz für in ArcGIS verwendete Abfrageausdrücke

SQL (Structured Query Language) ist eine Standardcomputersprache, die definierte Syntax und Ausdrücke enthält, die für den Zugriff auf und die Verwaltung von Daten in Datenbanken und anderen Datenverarbeitungstechnologien verwendet werden.

Das American National Standards Institute (ANSI) definiert einen Standard für SQL. Die meisten RDBMS verwenden diesen Standard und haben ihn erweitert, sodass die SQL-Syntaxen verschiedener RDBMS leicht voneinander abweichen.

Abfrageausdrücke in ArcGIS entsprechen den SQL-Standardausdrücken. Die in einem Ausdruck verwendete SQL-Syntax variiert je nach Datenquelle. Jede Datenquelle hat ihre eigene SQL-Variante, die als "SQL-Dialekt" bezeichnet wird.

Beispiel:

  • Für dateibasierte Daten, einschließlich File-Geodatabases, Shapefiles, In-Memory-Tabellensichten, Textdateien wie beispielsweise Tabellen in den Formaten .dbf, .csv, .txt und .xlsx sowie Feature-Services, in denen standardisierte Abfragen verwendet werden, wird der ArcGIS-SQL-Dialekt verwendet, der eine Teilmenge der SQL-Funktionen unterstützt.
  • Mobile Geodatabases, die SQLite-Bibliothek "ST_geometry", GeoPackage und Excel verwenden den SQL-Dialekt SQLite.
  • Datenbanken oder Enterprise-Geodatabases verwenden die SQL-Syntax des zugrunde liegenden RDBMS wie beispielsweise Oracle, SQL Server, PostgreSQL, SAP HANA und IBM Db2. Dabei wird für jede Datenbank ein leicht abweichender SQL-Dialekt verwendet.

Wenn Sie ArcGIS-Dialogfelder zum Erstellen eines SQL-Ausdrucks verwenden, wird Ihnen das Anwenden der richtigen Syntax für die abgefragte Datenquelle durch automatisches Vervollständigen erleichtert. Während der Eingabe wird eine Eingabeaufforderung angezeigt, die Feldnamen, Werte, Schlüsselwörter und Operatoren anzeigt, die von der Datenquelle unterstützt werden.

Tipp:

Nehmen Sie die folgenden Informationen zu Hilfe, um zu bestimmen, wann beim Erstellen eines SQL-Ausdrucks die ArcGIS-SQL-Syntax und wann die SQL-Syntax des zugrunde liegenden RDBMS verwendet wird.

  • Wenn die Daten im SQL-Ausdruck aus einer Mischung von Datenquellen-Speicherorten kommen, geschieht Folgendes:
    • Wenn die Daten sowohl aus dateibasierten Datenquellen als auch aus einem RDBMS kommen, wird die ArcGIS-SQL-Syntax verwendet.
  • Wenn alle Daten im SQL-Ausdruck aus dem gleichen Datenquellen-Speicherort kommen, geschieht Folgendes:
    • Wenn die Daten aus einer dateibasierten Datenquelle kommen, wird die ArcGIS-SQL-Syntax verwendet.
    • Wenn es sich bei der Datenquelle um eine Datenbank oder Enterprise-Geodatabase handelt, übergibt ArcGIS den SQL-Ausdruck zur Auflösung dem RDBMS. Entnehmen Sie die spezifische Ausdruckssyntax und die unterstützten Datentypen der Dokumentation für das Datenbankmanagementsystem.

In ArcGIS Pro finden Sie das Dialogfeld für SQL-Ausdrücke an den folgenden Stellen:

Übersicht über die Syntax für SQL-Ausdrücke

Ein SQL-Ausdruck enthält eine Kombination aus mindestens einem Wert, mindestens einem Operator und mindestens einer SQL-Funktion, die zum Abfragen oder Auswählen einer Teilmenge von Features und Tabellendatensätzen in ArcGIS verwendet werden können.

Alle SQL-Abfragen werden mit dem Schlüsselwort SELECT ausgedrückt.

SELECT * FROM bildet den ersten Teil des SQL-Ausdrucks und wird in den meisten ArcGIS-Dialogfeldern automatisch vorgegeben. Wenn Sie zum Beispiel eine Abfrage durch Eingeben von SQL-Syntax erstellen wird eine SELECT-Anweisung zum Auswählen von Feldern in einem Layer oder einer Tabelle verwendet und für Sie bereitgestellt.

Der nächste Teil des SQL-Ausdrucks nach SELECT * FROM <Layer_name> ist die WHERE-Klausel. Die WHERE-Klausel wird verwendet, um Datensätze abzurufen, die bestimmte Kriterien erfüllen. Diesen Teil des Ausdrucks müssen Sie erstellen.

Tipp:

Das Sternchen (*) in einem SQL-Ausdruck wird verwendet, um alle Spalten abzufragen.

Hier ist eine einfache Form einer WHERE-Klausel in einem SQL-Ausdruck:

  • <Field_name> <Operator> <Value or String>

Syntax für einen einfachen SQL-Ausdruck

Beispiel: STATE_NAME = 'Florida'. Dieser Ausdruck enthält eine einzige Klausel und wählt alle Features aus, die "Florida" im Feld STATE_NAME enthalten.

Für zusammengesetzte Ausdrücke wird die folgende Form verwendet:

  • <Field_name> <Operator> <Value or String> <Connector> <Field_name> <Operator> <Value or String> ...

Syntax für einen zusammengesetzten SQL-Ausdruck

Beispiel: STATE_NAME = 'Florida' OR (STATE_NAME = 'South Carolina' AND POP2010 > 15000). Dieser zusammengesetzte Ausdruck besteht aus mehreren Klauseln, die durch einen logischen Operator (AND oder OR) verbunden sind. Es werden alle Features ausgewählt, die Florida im Feld STATE_NAME enthalten, und alle Features, die sowohl South Carolina im Feld STATE_NAME enthalten als auch im Feld POP2010 einen größeren Wert als 15.000 aufweisen.

Tipp:

Optional können Klammern () verwendet werden, um die Reihenfolge der Operationen in zusammengesetzten Ausdrücken zu definieren.

Da Sie Spalten als Ganzes auswählen und die Syntax SELECT * hart codiert ist., können Sie die SELECT-Klausel nicht auf die Rückgabe nur einiger Spalten der entsprechenden Tabelle beschränken. Aus diesem Grund können Schlüsselwörter wie beispielsweise DISTINCT, ORDER BY und GROUP BY in SQL-Ausdrücken in ArcGIS außer in Unterabfragen nicht verwendet werden. Weitere Informationen finden Sie unter Unterabfragen.

In den folgenden Abschnitten werden die Elemente allgemeiner in ArcGIS verwendeter SQL-Abfrageausdrücke beschrieben.

Allgemeine Abfragen: Suchen von Zeichenfolgen

Zeichenfolgen müssen in Abfragen immer in einfache Anführungszeichen gesetzt werden, z. B.:

STATE_NAME = 'California'

Bei Zeichenfolgen in Ausdrücken muss die Groß-/Kleinschreibung beachtet werden, es sei denn, die Ausführung erfolgt in Geodatabases in Microsoft SQL Server. Um eine Suche in anderen Datenquellen 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 dateibasierte Datenquellen wie File-Geodatabases oder Shapefiles die Funktion UPPER oder LOWER, um die Groß-/Kleinschreibung für eine Auswahl festzulegen. Durch den folgenden Ausdruck wird beispielsweise der Bundesstaat ausgewählt, dessen Name als 'Rhode Island' oder 'RHODE ISLAND' gespeichert ist:

UPPER(STATE_NAME) = 'RHODE ISLAND'

Wenn die Zeichenfolge ein einzelnes Anführungszeichen enthält, müssen Sie zunächst ein weiteres Anführungszeichen als Escape-Zeichen einfügen, z. B.:

NAME = 'Alfie''s Trough'

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 von Zeichen oder kein 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'

Sie können die Operatoren "Größer als" (>), "Kleiner als" (<), "Größer gleich" (>=), "Kleiner gleich" (<=), "ungleich" (<>) 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'

Zum Formatieren von Zeichenfolgen können Zeichenfolgen-Funktionen verwendet werden. Durch die Funktion LEFT wird zum Beispiel eine bestimmte Anzahl von Zeichen links von der Zeichenfolge zurückgegeben. Durch die folgende Beispielabfrage werden alle Bundesstaaten abgerufen, die mit dem Buchstaben "A" beginnen:

LEFT(STATE_NAME,1) = 'A'

Eine Liste der unterstützten Funktionen finden Sie in der Dokumentation zu Ihrem Datenbankmanagementsystem (DBMS).

Allgemeine Ausdrücke: Suche nach NULL-Werten

Verwenden Sie das Schlüsselwort NULL zum Auswählen von Features und Datensätzen, die für das angegebene Feld NULL-Werte 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:

POPULATION 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

Allgemeine Ausdrücke: Suchen nach Zahlen

Als Dezimaltrennzeichen wird unabhängig von Gebietsschema oder Ländereinstellungen immer ein Dezimalpunkt (.) verwendet. Ein Komma darf in einem Ausdruck weder als Dezimal- noch als Tausendertrennzeichen verwendet werden.

In Abfragen nach Zahlenwerten können Sie die Operatoren "Gleich" (=), "Ungleich" (<>), "Größer als " (>), "Kleiner als" (<), "Größer gleich" (>=), "Kleiner gleich" (<=) und "BETWEEN" verwenden, z. B.:

POPULATION >= 5000

Zum Formatieren von Zahlen können numerische Funktionen verwendet werden. Mit der Funktion ROUND kann eine Zahl in einer File-Geodatabase beispielsweise auf eine bestimmte Anzahl von Dezimalstellen gerundet werden:

ROUND(SQKM,0) = 500

Eine Liste der unterstützten numerischen Funktionen finden Sie in der DBMS-Dokumentation.

Datum und Uhrzeit

Allgemeine Regeln und Ausdrücke

In Geodatabase-Datenquellen werden Datumsangaben in einem Datumsfeld gespeichert. In Shapefiles jedoch nicht. Daher umfassen die meisten der unten aufgeführten Abfrage-Syntaxbeispiele eine Uhrzeit-Referenz. In einigen Fällen kann die Abfrage ohne Uhrzeit gestellt werden, wenn bekannt ist, dass das Feld nur Datumsangaben enthält. In anderen Fällen muss die Abfrage die Uhrzeit enthalten, da sonst ein Syntaxfehler auftritt.

Bei der Suche nach Datumsfeldern muss sorgfältig die Syntax beachtet werden, die Ihre Datenquelle verlangt. Wenn Sie eine Datumsabfrage im Klausel-Modus der Abfrageerstellung definieren, wird automatisch die korrekte Syntax für Sie generiert. Im Folgenden erhalten Sie ein Beispiel für eine Abfrage, die alle Datensätze am oder nach dem 1. Januar 2011 für eine File-Geodatabase-Datenquelle zurückgibt:

INCIDENT_DATE >= date '2011-01-01 00:00:00'

Hinweis:

Datumsangaben werden in der zugrunde liegenden Datenbank in Bezug auf den 30. Dezember 1899, 00:00:00 Uhr gespeichert. Dies gilt für alle hier aufgeführten Datenquellen.

In diesem Abschnitt werden nur Abfragen von Datumsangaben, nicht jedoch von Uhrzeitangaben erläutert. Wenn eine andere Uhrzeit als 00:00:00 mit den Datumsangaben gespeichert wird (z. B. 12. Januar 1999, 04:00:00), wird der Datensatz bei einer Abfrage des Datums allein nicht zurückgegeben. Wenn Sie für ein Datums-/Uhrzeitfeld nur ein Datum angeben, werden für die Uhrzeit Nullen verwendet und daher nur die Datensätze abgerufen, deren Uhrzeit "12:00:00 AM" lautet.

In der Attributtabelle werden das Datum und die Uhrzeit in einem benutzerfreundlichen, auf den Ländereinstellungen basierenden Format anstatt im Format der zugrunde liegenden Datenbank angezeigt. In den meisten Fällen ist dies akzeptabel, hat jedoch auch bestimmte Nachteile:

  • Die in der SQL-Abfrage angezeigte Zeichenfolge hat möglicherweise nur wenig Ähnlichkeit mit dem in der Tabelle angezeigten Wert. Dies ist insbesondere dann der Fall, wenn Uhrzeitangaben betroffen sind. Wenn beispielsweise Ländereinstellungen für die USA festgelegt sind, wird eine im Format "00:00:15" eingegebene Uhrzeit in der Attributtabelle als "12:00:15 AM" angezeigt. Die Abfragesyntax lautet in diesem Fall "Datefield = '1899-12-30 00:00:15'".
  • Die Attributtabelle erhält erst beim Speichern der Änderungen Informationen darüber, welche Datenquelle zugrunde liegt. Es wird zunächst versucht, den eingegebenen Wert so zu formatieren, dass er dem eigenen Format entspricht. Beim Speichern der Bearbeitungen wird der resultierende Wert dann so angepasst, dass er der Datenbank entspricht. Aus diesem Grund können Sie Uhrzeitangaben in ein Shapefile eingeben, die jedoch beim Speichern der Bearbeitungen gelöscht werden. Das Feld enthält dann den Wert "1899-12-30", der als "12:00:00 AM" oder je nach den Ländereinstellungen ähnlich angezeigt wird.

Datumssyntax für Enterprise-Geodatabases

Oracle

Datefield = date 'yyyy-mm-dd'

Beachten Sie, dass keine Datensätze zurückgegeben werden, wenn die Zeit nicht NULL ist.

In Oracle können Datumsangaben alternativ auch mit folgendem Format abgefragt werden:

Datefield = TO_DATE('yyyy-mm-dd hh:mm:ss','YYYY-MM-DD HH24:MI:SS')

Mit dem zweiten Parameter "YYYY-MM-DD HH24:MI:SS" wird das Format für die Abfrage beschrieben. Eine tatsächliche Abfrage sieht dann folgendermaßen aus:

Datefield = TO_DATE('2003-01-08 14:35:00','YYYY-MM-DD HH24:MI:SS')

Sie können auch eine kürzere Version verwenden:

TO_DATE('2003-11-18','YYYY-MM-DD')

Auch in diesem Fall werden keine Datensätze zurückgegeben, deren Uhrzeitangaben nicht NULL sind.

SQL Server

Datefield = 'yyyy-mm-dd hh:mm:ss'

Der Teil "hh:mm:ss" der Abfrage kann weggelassen werden, wenn in den Datensätzen keine Uhrzeit festgelegt ist.

Alternatives Format:

Datefield = 'mm/dd/yyyy'

IBM Db2

Datefield = TO_DATE('yyyy-mm-dd hh:mm:ss','YYYY-MM-DD HH24:MI:SS')

Der Teil "hh:mm:ss" der Abfrage kann nicht weggelassen werden, auch wenn er "00:00:00" entspricht.

PostgreSQL

Datefield = TIMESTAMP 'YYYY-MM-DD HH24:MI:SS'
Datefield = TIMESTAMP 'YYYY-MM-DD'

Geben Sie bei Abfragen mit dem Operator "gleich" den vollständigen Zeitstempel an. Andernfalls werden keine Datensätze zurückgegeben. Die Abfrage für die folgenden Anweisungen kann erfolgreich ausgeführt werden, wenn die abgefragte Tabelle Datensätze enthält, die exakt den folgenden Zeitstempeln entsprechen: 2007-05-29 00:00:00 oder 2007-05-29 12:14:25:

select * from table where date = '2007-05-29 00:00:00';

oder

select * from table where date = '2007-05-29 12:14:25';

Wenn Sie Operatoren wie "größer als", "kleiner als", "größer oder gleich" oder "kleiner oder gleich" verwenden, muss die Zeit nicht festgelegt werden; Sie können dies jedoch tun, wenn Sie Wert auf Präzision legen. Sie können beide nachfolgend angegebenen Anweisungen verwenden:

select * from table where date < '2007-05-29';
select * from table where date < '2007-05-29 12:14:25';

File-Geodatabase, Shapefiles, Coverages und andere dateibasierte Datenquellen

Datefield = date 'yyyy-mm-dd'

File-Geodatabases unterstützen die Verwendung einer Zeitangabe im Datumsfeld, daher kann dem Ausdruck Folgendes hinzugefügt werden:

Datefield = date 'yyyy-mm-dd hh:mm:ss'

Shapefiles und Coverages unterstützen die Verwendung einer Zeit im Datumsfeld nicht.

Hinweis:

Von der File-Geodatabase verwendetes SQL basiert auf dem SQL-92-Standard.

Bekannte Einschränkungen

Die Abfrage nach einem Datum im linken Teil (erste Tabelle) von zwei Join-Tabellen kann nur mit dateibasierten Datenquellen, z. B. File-Databases, Shapefiles und DBF-Tabellen, durchgeführt werden. Es gibt jedoch einen möglichen Workaround zum Arbeiten mit nicht dateibasierten Daten (z. B. Enterprise-Daten), wie unten beschrieben.

Die Abfrage eines Datums im linken Teil von zwei verbundenen Tabellen ist nur erfolgreich, wenn Sie die eingeschränkte Version von SQL verwenden, die für dateibasierte Datenquellen entwickelt wurde. Wenn Sie nicht eine solche Datenquelle verwenden, können Sie die Verwendung dieses Formats im Ausdruck erzwingen. Dazu stellen Sie sicher, dass sich der Abfrageausdruck auf Felder aus mehr als einer der verbundenen Tabellen bezieht. Wenn zum Beispiel eine Feature-Class und eine Tabelle (FC1 und Table1) verbunden sind und beide aus einer Enterprise-Geodatabase stammen, tritt bei den folgenden Ausdrücken ein Fehler auf oder es werden keine Daten zurückgegeben:

FC1.date = date #01/12/2001#
FC1.date = date '01/12/2001'

Eine erfolgreiche Abfrage kann z. B. so aussehen:

FC1.date = date '01/12/2001' and Table1.OBJECTID > 0

Da sich die Abfrage auf Felder aus beiden Tabellen bezieht, wird die eingeschränkte SQL-Version verwendet. In diesem Ausdruck ist "Table1.OBJECTID" bei Datensätzen, die während der Verbindungserstellung übereingestimmt haben, immer > 0. Somit hat dieser Ausdruck für alle Zeilen, die Verbindungsübereinstimmungen enthalten, den Wert "true".

Um sicherzustellen, dass jeder Datensatz mit "FC1.date = date '01/12/2001'" ausgewählt wird, verwenden Sie die folgende Abfrage:

FC1.date = date '01/12/2001' and (Table1.OBJECTID IS NOT NULL OR Table1.OBJECTID IS NULL)

Mit dieser Abfrage werden alle Datensätze mit "FC1.date = date '01/12/2001'" ausgewählt, egal ob es für die einzelnen Datensätze eine Verbindungsübereinstimmung gab oder nicht.

Kombinieren von Ausdrücken

Zusammengesetzte 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, z. B.:

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, z. B.:

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'

Berechnungen

Berechnungen können mit den folgenden arithmetischen Operatoren in Ausdrücke einbezogen werden: +, -, * und /. Berechnungen können sich aus Feldern und Zahlen zusammensetzen, z. B.:

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.

HOUSEHOLDS > MALES * (POP90_SQMI + AREA)

Sie können im SQL-Bearbeitungsmodus Klammern hinzufügen, indem Sie sie eingeben oder mithilfe der Befehle "Gruppieren" oder "Gruppierung aufheben" im Klausel-Modus hinzufügen oder entfernen.

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. Verwenden Sie dazu die Schlüsselwörter "IN" und "ANY". 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)

Hinweis:

Shapefiles und andere nicht aus Geodatabases stammende dateibasierte Datenquellen unterstützen keine Unterabfragen. Unterabfragen, die im Zusammenhang mit versionierten Enterprise-Feature-Classes und -Tabellen ausgeführt werden, geben keine in den Deltatabellen gespeicherten Features zurück. File-Geodatabases bieten nur eingeschränkte Unterstützung für Unterabfragen (wie in diesem Abschnitt beschrieben), während Enterprise-Geodatabases uneingeschränkte Unterstützung bieten. Weitere Informationen über sämtliche Unterabfragenoptionen von Enterprise-Geodatabases finden Sie in der DBMS-Dokumentation.

Durch die folgende Abfrage werden die Features mit einem GDP2006 größer als GDP2005 aus allen Features in der Tabelle "countries" abgerufen:

GDP2006 > (SELECT MAX(GDP2005) FROM countries)

Die Unterstützung von Unterabfragen in File-Geodatabases ist auf Folgendes beschränkt:

  • Skalar-Unterabfragen mit Vergleichsoperatoren. Eine Skalar-Unterabfrage gibt einen einzigen Wert zurück, z. B.:
    GDP2006 > (SELECT MAX(GDP2005) FROM countries)
    Für File-Geodatabases können die Funktionen AVG, COUNT, MIN, MAX und SUM nur in Skalar-Unterabfragen verwendet werden.
  • EXISTS-Prädikat, z. B.:
    EXISTS (SELECT * FROM indep_countries WHERE COUNTRY_NAME = 'Mexico')

Operatoren

Folgende Liste enthält alle Abfrageoperatoren, die in File-Geodatabases, Shapefiles, Coverages und anderen dateibasierten Datenquellen unterstützt werden. Sie werden auch von Enterprise-Geodatabases unterstützt. Diese Datenquellen erfordern jedoch möglicherweise eine andere Syntax. Zusätzlich zu den unten aufgeführten Operatoren unterstützen Enterprise-Geodatabases weitere Optionen. Informationen hierzu finden Sie in der DBMS-Dokumentation.

Arithmetische Operatoren

Arithmetische Operatoren werden zum Addieren, Subtrahieren, Multiplizieren und Dividieren von numerischen Werten verwendet.

OperatorBeschreibung

*

Arithmetischer Operator für die Multiplikation

/

Arithmetischer Operator für die Division

+

Arithmetischer Operator für die Addition

-

Arithmetischer Operator für die Subtraktion

Arithmetische Operatoren

Vergleichsoperatoren

Vergleichsoperatoren werden zum Vergleichen eines Ausdrucks mit einem anderen verwendet.

OperatorBeschreibung

<

Das Kleiner-als-Zeichen Es kann mit Zeichenfolgen (Vergleich beruht dann auf der alphabetischen Reihenfolge), Zahlen und Datumsangaben verwendet werden.

<=

Das Kleiner-gleich-Zeichen Es kann mit Zeichenfolgen (Vergleich beruht dann auf der alphabetischen Reihenfolge), Zahlen und Datumsangaben verwendet werden.

<>

Das Ungleich-Zeichen Es kann mit Zeichenfolgen (Vergleich beruht dann auf der alphabetischen Reihenfolge), Zahlen und Datumsangaben verwendet werden.

>

Das Größer-als-Zeichen Es kann mit Zeichenfolgen (Vergleich beruht dann auf der alphabetischen Reihenfolge), Zahlen und Datumsangaben verwendet werden.

>=

Das Größer-gleich-Zeichen Es kann mit Zeichenfolgen (Vergleich beruht dann auf der alphabetischen Reihenfolge), Zahlen und Datumsangaben verwendet werden.

[NOT] BETWEEN x AND y

Mit diesem Ausdruck wird ein Datensatz ausgewählt, der einen Wert größer oder gleich x und kleiner oder gleich y aufweist. Wenn dem Ausdruck NOT vorangestellt ist, wird ein Datensatz mit einem Wert außerhalb des angegebenen Bereichs ausgewählt. Mit diesem Ausdruck werden z. B. alle Datensätze mit einem Wert größer oder gleich 1 und kleiner oder gleich 10 ausgewählt:

OBJECTID BETWEEN 1 AND 10

Dies entspricht dem folgenden Ausdruck:

OBJECTID >= 1 AND OBJECTID <= 10

Der Ausdruck mit BETWEEN ist jedoch besser geeignet, wenn Sie ein indiziertes Feld abfragen.

[NOT] EXISTS

Gibt TRUE zurück, wenn die Unterabfrage mindestens einen Datensatz enthält; andernfalls wird FALSE zurückgegeben. Der folgende Ausdruck gibt beispielsweise TRUE zurück, wenn das Feld OJBECTID einen Wert von 50 enthält:

EXISTS (SELECT * FROM parcels WHERE OBJECTID = 50)

EXISTS wird nur in File- und Enterprise-Geodatabases unterstützt.

[NOT] IN

Hiermit wird ein Datensatz ausgewählt, der eine von mehreren Zeichenfolgen in einem Feld aufweist. Wenn dem Ausdruck NOT vorangestellt ist, wird ein Datensatz ausgewählt, der in keinem Feld die angegebenen Zeichenfolgen bzw. Werte aufweist. Mit dem folgenden Ausdruck wird beispielsweise nach vier verschiedenen Namen von Bundesstaaten gesucht:

STATE_NAME IN ('Alabama', 'Alaska', 'California', 'Florida')

IS [NOT] NULL

Hiermit wird ein Datensatz ausgewählt, der einen NULL-Wert für das angegebene Feld aufweist. Wenn NULL nach NOT steht, wird ein Datensatz mit einem beliebigen Wert im angegebenen Feld ausgewählt.

x [NOT] LIKE y [ESCAPE 'Escape-Zeichen']

Um nach einer Teilzeichenfolge zu suchen, verwenden Sie den Operator LIKE (anstelle des Operators "Gleich") mit Platzhaltern. Das Prozentzeichen (%) kann für eine beliebige Anzahl von Zeichen oder kein Zeichen stehen. Wenn Sie bei der Suche ein Platzhalterzeichen verwenden möchten, das für ein einzelnes Zeichen steht, verwenden Sie einen Unterstrich (_). Mit der Funktion CAST können Sie auf Daten zugreifen, die keine Zeichendaten darstellen. Diese Abfrage gibt beispielsweise Zahlen aus dem Feld SCORE_INT zurück, die mit 8 beginnen:

CAST (SCORE_INT AS VARCHAR(10)) LIKE '8%'

Soll die Suchzeichenfolge ein Prozentzeichen oder einen Unterstrich enthalten, bestimmen Sie mit dem Schlüsselwort "ESCAPE" ein anderes Zeichen als das Escape-Zeichen. Dadurch wird angegeben, dass ein echtes Prozentzeichen oder ein echter Unterstrich unmittelbar folgt. Dieser Ausdruck gibt beispielsweise alle Zeichenfolgen mit "10 %" wie "10 % RABATT" oder "A10 %" zurück.

AMOUNT LIKE '%10$%%' ESCAPE '$'

Vergleichsoperatoren

Logische Operatoren

OperatorBeschreibung

AND

Hiermit werden zwei Bedingungen kombiniert. Wenn beide zutreffen, wird ein Datensatz ausgewählt. Wenn Sie beispielsweise ein beliebiges Haus mit mehr als 1.500 Quadratfuß und einer Garage für mehr als zwei Autos auswählen möchten, verwenden Sie folgenden Ausdruck:

AREA > 1500 AND GARAGE > 2

OR

Hiermit werden zwei Bedingungen kombiniert. Wenn mindestens eine zutrifft, wird ein Datensatz ausgewählt. Wenn Sie beispielsweise ein beliebiges Haus mit mehr als 1.500 Quadratfuß oder einer Garage für mehr als zwei Autos auswählen möchten, verwenden Sie folgenden Ausdruck:

AREA > 1500 OR GARAGE > 2

NOT

Hiermit wird ein Datensatz ausgewählt, der nicht mit dem Ausdruck übereinstimmt. Mit folgendem Ausdruck werden beispielsweise alle US-amerikanischen Bundesstaaten außer Kalifornien ausgewählt:

NOT STATE_NAME = 'California'

Logische Operatoren

Operatoren für Zeichenfolgen

OperatorBeschreibung

||

Eine Zeichenfolge zurückgeben, die das Ergebnis der Verkettung von mindestens zwei Zeichenfolgenausdrücken ist.

FIRST_NAME || MIDDLE_NAME || LAST_NAME

Funktionen

Im Folgenden finden Sie eine vollständige Liste der Funktionen, die von File-Geodatabases, Shapefiles, Coverages und anderen dateibasierten Datenquellen unterstützt werden. Die Funktionen werden auch von Enterprise-Geodatabases unterstützt. Diese Datenquellen erfordern jedoch möglicherweise eine andere Syntax oder andere Funktionsnamen. Zusätzlich zu den unten aufgeführten Funktionen unterstützen Enterprise-Geodatabases weitere Optionen. Informationen hierzu finden Sie in der DBMS-Dokumentation.

Datumsfunktionen

FunktionBeschreibung

CURRENT_DATE

Das aktuelle Datum wird zurückgegeben.

EXTRACT(extract_field FROM extract_source)

Liefert als Rückgabe den extract_field-Teil von extract_source. Beim Argument extract_source handelt es sich um einen Datums-/Uhrzeitausdruck. Beim Argument extract_field kann es sich um eines der folgenden Schlüsselwörter handeln: YEAR, MONTH, DAY, HOUR, MINUTE oder SECOND.

CURRENT TIME

Gibt die aktuelle Uhrzeit zurück.

Datumsfunktionen

Zeichenfolgenfunktion

Bei den Argumenten, die als string_exp aufgeführt sind, kann es sich um den Namen einer Spalte, ein Zeichenfolgenliteral oder das Ergebnis einer anderen Skalarfunktion handeln, in der der zugrunde liegende Datentyp als Zeichentyp dargestellt werden kann.

Bei Argumenten, die als character_exp aufgeführt sind, handelt es sich um Zeichenfolgen mit variabler Länge.

Bei Argumenten, die als start oder length aufgeführt sind, kann es sich um ein numerisches Literal oder das Ergebnis einer anderen Skalarfunktion handeln, wobei der zugrunde liegende Datentyp einen numerischen Typ darstellen kann.

Diese Zeichenfolge-Funktionen basieren auf 1, d. h., beim ersten Zeichen der Zeichenfolge handelt es sich um das Zeichen 1.

FunktionBeschreibung

CHAR_LENGTH(string_exp)

Gibt die Länge des String-Ausdrucks in Zeichen zurück.

LOWER(string_exp)

Gibt eine Zeichenfolge zurück, der mit string_exp identisch ist und in dem alle Großbuchstaben in Kleinbuchstaben konvertiert wurden.

POSITION(character_exp IN character_exp)

Gibt die Position des ersten Zeichenausdrucks im zweiten Zeichenausdruck zurück. Das Ergebnis ist eine genaue Zahl mit einer implementationsdefinierten Genauigkeit und der Anzahl der Dezimalstellen von 0.

SUBSTRING(string_exp FROM start FOR length)

Gibt eine aus string_exp abgeleitete Zeichenfolge zurück. Diese Zeichenfolge beginnt an der durch start festgelegten Zeichenposition und weist eine Länge von length Zeichen auf.

TRIM(BOTH | LEADING | TRAILING trim_character FROM string_exp)

Gibt string_exp zurück, wobei trim_character von den führenden, nachstehenden oder beiden Enden der Zeichenfolge entfernt wurde.

UPPER(string_exp)

Gibt eine Zeichenfolge zurück, die mit string_exp identisch ist und in der alle Kleinbuchstaben in Großbuchstaben konvertiert wurden.

Zeichenfolgenfunktion

Numerische Funktionen

Bei allen Zahlenfunktionen wird ein numerischer Wert zurückgegeben.

Bei den Argumenten, die als numeric_exp, float_exp oder integer_exp aufgeführt sind, kann es sich um einen Namen einer Spalte, das Ergebnis einer anderen Skalarfunktion oder ein "numeric-literal" handeln, wobei der zugrunde liegende Datentyp als numerischer Typ dargestellt werden kann.

FunktionBeschreibung

ABS(numeric_exp)

Gibt den absoluten Wert von numeric_exp zurück.

ACOS(float_exp)

Gibt den Arkuskosinus von float_exp als Winkel, ausgedrückt in Radianten, zurück.

ASIN(float_exp)

Gibt den Arkussinus von float_exp als Winkel, ausgedrückt in Radianten, zurück.

ATAN(float_exp)

Gibt den Arkustangens von float_exp als Winkel, ausgedrückt in Radianten, zurück.

CEILING(numeric_exp)

Gibt den kleinsten Integer-Wert zurück, der größer als oder gleich numeric_exp ist.

COS(float_exp)

Gibt den Kosinus von float_exp zurück, wobei float_exp ein in Radianten ausgedrückter Winkel ist.

FLOOR(numeric_exp)

Gibt den größten Integer-Wert, der kleiner als oder gleich numeric_exp ist, zurück.

LOG(float_exp)

Gibt den natürlichen Logarithmus von float_exp zurück.

LOG10(float_exp)

Gibt den Logarithmus zur Basis 10 von float_exp zurück.

MOD(integer_exp1, integer_exp2)

Gibt den Rest von integer_exp1 dividiert durch integer_exp2 zurück.

POWER(numeric_exp, integer_exp)

Gibt den Wert von numeric_exp potenziert mit integer_exp zurück.

ROUND(numeric_exp, integer_exp)

Gibt numeric_exp auf integer_exp Stellen rechts neben dem Dezimaltrennzeichen aufgerundet zurück. Wenn integer_exp negativ ist, wird numeric_exp auf |integer_exp| Stellen links neben dem Dezimaltrennzeichen gerundet.

SIGN(numeric_exp)

Gibt einen Indikator des Vorzeichens von numeric_exp zurück. Wenn numeric_exp kleiner als Null ist, wird "-1" zurückgegeben. Wenn numeric_exp gleich Null ist, wird 0 zurückgegeben. Wenn numeric_exp größer als Null ist, wird "1" zurückgegeben.

SIN(float_exp)

Gibt den Sinus von float_exp zurück, wobei float_exp ein in Radianten ausgedrückter Winkel ist.

TAN(float_exp)

Gibt den Tangens von float_exp zurück, wobei float_exp ein in Radianten ausgedrückter Winkel ist.

TRUNCATE(numeric_exp, integer_exp)

Gibt numeric_exp auf integer_exp Stellen rechts neben dem Dezimaltrennzeichen verkürzt zurück. Wenn integer_exp negativ ist, wird numeric_exp auf |integer_exp| Stellen links neben dem Dezimaltrennzeichen abgeschnitten.

Numerische Funktionen

Funktion "CAST"

Die Funktion CAST() konvertiert einen Wert oder Ausdruck aus einem Datentyp in einen anderen angegebenen Datentyp. Folgende Syntax wird verwendet:

CAST (expression AS data_type(length))

  • Dabei ist expression ein erforderlicher Parameter, bei dem es sich um einen Literalwert oder einen gültigen Ausdruck eines beliebigen Typs (z. B. Spaltenname oder Variable) handeln kann, der konvertiert wird.
  • Dabei ist data_type ein erforderlicher Parameter, und das verwendete Schlüsselwort ist der resultierende Datentyp, in den der Ausdruck umgewandelt wird. In der nachstehenden Tabelle finden Sie eine Liste der Schlüsselwörter, die für gültige Datentypen verwendet werden können.
  • Dabei ist length ein optionaler Parameter, der die Länge des resultierenden Datentyps angibt.

Beispielsweise kann in bestimmten Szenarien eine Zeichenfolgeoperation notwendig sein, aber wenn die Daten in einem Feld eines Zahlentyps gespeichert sind, funktioniert die Abfrage nicht. Sie können jedoch mit der Funktion "CAST()" das Zahlenfeld in eine Zeichenfolge für eine SQL-Operation umwandeln. Mit diesem Code wird das Zahlenfeld SQLNUM in ein Textfeld umgewandelt, das anschließend in einer Zeichenfolgeoperation verwendet werden kann.

CAST(SQLNUM AS CHARACTER(12))

Die folgende Tabelle enthält die Schlüsselwörter, die für Datentypkonvertierungen verwendet werden können. Sie können in Groß- oder Kleinbuchstaben angegeben werden.

DatentypSchlüsselwort

Long Integer

  • INTEGER
  • INT

Short Integer

  • SMALLINT

"Float" (Gleitkommazahl mit einfacher Genauigkeit)

  • REAL
  • "FLOAT [p]" ist standardmäßig "7", was "REAL" entspricht. "p > 7" entspricht "DOUBLE PRECISION".

"Double" (Gleitkommazahl mit doppelter Genauigkeit)

  • DOUBLE PRECISION
  • NUMERIC (p[,s])
  • DECIMAL (p[,s])

Zeichenfolge

  • CHAR(n)
  • VARCHAR(n)
  • CHARACTER(n)

Datum/Uhrzeit

  • DATE
  • TIME
  • TIMESTAMP

Hinweis:

  • "p": Genauigkeit
  • "s": Dezimalstellen
  • "n": Definiert die Länge der Zeichenfolge in Zeichen.
  • ( ): Erforderlicher Parameter
  • [ ]: Optionaler Parameter

Bei Verwendung der Funktion "CAST" unterstützte Datentypkonvertierungen

Beispiele für die Funktion "CAST"

  • Beispiel 1:

    CAST(AREA AS INTEGER)

    Die Umwandlung von "AREA" (Datentyp "Float") in "INTEGER" gibt eine ganze Zahl zurück. Alle Ergebniswerte werden nach dem Dezimalzeichen abgeschnitten.

  • Beispiel 2:

    CAST(Rent AS FLOAT) + Utilities > 2000.45

    "Rent" (Datentyp "CHARACTER") wird in den Datentyp "FLOAT" umgewandelt, wobei "Utilities" ebenfalls den Datentyp "FLOAT" aufweist.

Verwandte Themen