SQL-Referenz für in ArcGIS verwendete Abfrageausdrücke
In diesem Thema werden die Elemente allgemeiner Abfragen beschrieben, die in ArcGIS in Selektionsausdrücken verwendet werden. Abfrageausdrücke in ArcGIS folgen der allgemeinen SQL-Syntax.
Die SQL-Syntax funktioniert nicht bei der Berechnung von Feldern mit der Feldberechnung.
Felder
Um ein Feld in einem SQL-Ausdruck anzugeben, müssen Sie nur dann ein Trennzeichen eingeben, wenn der Feldname andernfalls mehrdeutig wäre (wenn er beispielsweise als reserviertes SQL-Schlüsselwort interpretiert würde).
Da es jedoch viele reservierte Schlüsselwörter gibt und in Folgeversionen neue Schlüsselwörter hinzugefügt werden können, empfiehlt es sich, Feldnamen immer in Trennzeichen zu setzen.
Die Trennzeichen für Feldnamen variieren je nach DBMS. Wenn Sie dateibasierte Daten abfragen, z. B. File-Geodatabase- oder ArcSDE-Geodatabase-Daten bzw. Daten aus einer ArcIMS-Feature-Class oder einem ArcIMS-Image-Service-Sublayer, können Sie Feldnamen in doppelte Anführungszeichen setzen:
"AREA"
Wenn Sie Personal-Geodatabase-Daten abfragen, können Sie die Felder in eckige Klammern einschließen:
[AREA]
Bei Raster-Datasets aus Personal-Geodatabases müssen Feldnamen in doppelte Anführungszeichen gesetzt werden.
"AREA"
Strings
Zeichenfolgen müssen in Abfragen stets in einfache Anführungszeichen eingeschlossen werden. Beispiele:
STATE_NAME = 'California'
- Bei Zeichenfolgen in Ausdrücken gilt die Groß-/Kleinschreibung. Bei Feature-Classes und -Tabellen kann die Groß- oder Kleinschreibung mit den Funktionen "UPPER" und "LOWER" festgelegt werden. Beispiel:
UPPER("STATE_NAME") = 'RHODE ISLAND'
- Bei Zeichenfolgen wird für Feature-Classes und Tabellen für Personal-Geodatabases zwischen Groß- und Kleinschreibung nicht unterschieden. Bei Bedarf können Sie die Funktionen UCASE und LCASE verwenden, die mit UPPER bzw. LOWER gleichbedeutend sind.
Die Platzhalter, mit denen nach Teilzeichenfolgen gesucht wird, hängen ebenfalls von der abgefragten Datenquelle ab. In einer dateibasierten oder ArcSDE-Geodatabase-Datenquelle würden mit dem folgenden Ausdruck die US-Bundesstaaten Mississippi und Missouri ausgewählt werden:
"STATE_NAME" LIKE 'Miss%'
Das Prozentzeichen (%) kann für eine beliebige Anzahl an Zeichen oder kein Zeichen stehen. 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 (?).
Zum Formatieren von Zeichenfolgen können Zeichenfolgefunktionen verwendet werden. Durch die Funktion LEFT wird zum Beispiel eine bestimmte Anzahl von Zeichen links von der Zeichenfolge zurückgegeben. Mit der folgenden 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 DBMS.
Ziffern
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. Beispiel:
"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 aufgerundet werden:
ROUND("SQKM",0) = 500
Eine Liste der unterstützten numerischen Funktionen finden Sie in der Dokumentation zu DBMS.
Datum und Uhrzeit
Allgemeine Regeln
In Geodatabase-Datenquellen werden Datumsangaben in einem Datumsfeld gespeichert. In ArcInfo-Coverages und 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.
Der Hauptzweck des Datumsformats in ArcMap besteht jedoch in der Speicherung von Datumsangaben und nicht von Uhrzeitangaben. Es ist möglich, nur Uhrzeitangaben im Feld zu speichern, wenn die zugrunde liegende Datenbank ein Datums-/Uhrzeit-Feld verwendet. Diese Vorgehensweise wird jedoch nicht empfohlen. Eine Uhrzeitabfrage lässt sich nicht ohne weiteres durchführen, da "12:30:05" beispielsweise als "1899-12-30 12:30:05" gespeichert wird.
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 zwar in ein Shapefile eingeben; sie werden jedoch beim Speichern der Bearbeitungen gelöscht. 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 ArcSDE-Geodatabases
Informix
Datefield = 'yyyy-mm-dd hh:mm:ss'
Der Teil "hh:mm:ss" der Abfrage kann nicht weggelassen werden, auch wenn er "00:00:00" entspricht.
Oracle
Datefield = date 'yyyy-mm-dd'
Beachten Sie, dass keine Datensätze zurückgegeben werden, wenn die Zeit nicht null list.
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.
Sie können auch das folgende alternative Format verwenden:
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';
und das Beispiel
select * from table where date = '2007-05-29 12:14:25';
Wenn Sie Operatoren wie "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 Genauigkeit 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-Geodatabases, Shapefiles, Coverages und andere dateibasierte Datenquellen
Datumsangaben in File-Geodatabases, Shapefiles und Coverages wird date vorangestellt.
"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.
Von der File-Geodatabase verwendetes SQL basiert auf dem SQL-92-Standard.
Personal-Geodatabase
Datumsangaben in Personal-Geodatabases werden durch ein Nummernzeichen (#) begrenzt.
Beispiele:
[Datefield] = #mm-dd-yyyy hh:mm:ss#
Dieser Ausdruck kann auch auf "[Datefield] = #mm-dd-yyyy#" verkürzt werden.
Dies ist ein alternatives Format:
[Datefield] = #yyyy/mm/dd#
Bekannte Einschränkungen
Die Abfrage nach einem Datum im linken Teil (erste Tabelle) von zwei verbundenen Tabellen kann nur mit dateibasierten Datenquellen, z. B. File-Databases, Shapefiles und DBF-Tabellen, durchgeführt werden. Es gibt jedoch eine mögliche Problemumgehung zum Arbeiten mit nicht dateibasierten Daten, wie Personal-Geodatabase-Daten und ArcSDE-Daten. Diese wird unten vorgestellt.
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 Personal-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.
Unterabfragen
Coverages, Shapefiles und andere nicht aus Geodatabases stammende dateibasierte Datenquellen unterstützen keine Subabfragen. Unterabfragen, die im Zusammenhang mit versionierten ArcSDE-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 Personal- und ArcSDE-Geodatabases uneingeschränkte Unterstützung bieten. Weitere Informationen über sämtliche Unterabfragenoptionen von Personal- und ArcSDE-Geodatabases finden Sie in der DBMS-Dokumentation.
Eine Unterabfrage ist eine Abfrage, die in einer anderen Abfrage geschachtelt ist. 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)
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)
Mithilfe einer Unterabfrage müssen für jeden Datensatz in der Tabelle möglicherweise alle Daten in der Zieltabelle analysiert werden. Diese Abfrage kann daher bei einem großen Dataset sehr viel Zeit in Anspruch nehmen.
Die Unterstützung von Unterabfragen in File-Geodatabases ist auf Folgendes beschränkt:
- IN-Prädikat. Beispiele:
"COUNTRY_NAME" NOT IN (SELECT "COUNTRY_NAME" FROM indep_countries)
- Skalar-Unterabfragen mit Vergleichsoperatoren. Eine Skalar-Unterabfrage gibt einen einzigen Wert zurück. Beispiel:
"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. Beispiele:
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 Personal- und ArcSDE-Geodatabases unterstützt. Diese Datenquellen erfordern jedoch möglicherweise eine andere Syntax. Zusätzlich zu den unten aufgeführten Operatoren unterstützen Personal- und ArcSDE-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.
Operator |
Beschreibung |
---|---|
* |
Arithmetischer Operator für die Multiplikation |
/ |
Arithmetischer Operator für die Division |
+ |
Arithmetischer Operator für die Addition |
- |
Arithmetischer Operator für die Subtraktion |
Vergleichsoperatoren
Vergleichsoperatoren werden zum Vergleichen eines Ausdrucks mit einem anderen verwendet.
Operator |
Beschreibung |
---|---|
< |
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. Durch diese Abfrage wird beispielsweise in einem Coverage nach allen Städten gesucht, deren Namen mit den Buchstaben M bis Z beginnen: "CITY_NAME" >= 'M' |
[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 10Dies entspricht dem folgenden Ausdruck: "OBJECTID" >= 1 AND OBJECTID <= 10Der 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-, Personal- und ArcSDE-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')Für File-, Personal- und ArcSDE-Geodatabases kann dieser Operator auch auf eine Unterabfrage angewendet werden: "STATE_NAME" IN (SELECT "STATE_NAME" FROM states WHERE "POP" > 5000000) |
IS [NOT] NULL |
Hiermit wird ein Datensatz ausgewählt, der einen Nullwert für das angegebene Feld aufweist. Wenn NULL nach NOT steht, wird ein Datensatz mit einem beliebigen Wert im angegebenen Feld ausgewählt. Mit diesem Ausdruck werden zum Beispiel alle Datensätze mit einem Nullwert für Bevölkerung ausgewählt: "POPULATION" IS NULL |
x [NOT] LIKE y [ESCAPE 'Escape-Zeichen'] |
Um nach einer Teilzeichenfolge zu suchen, verwenden Sie den Operator LIKE (anstelle des Operators "Gleich") mit Platzhaltern. Mit diesem Ausdruck werden z. B. die US-Bundesstaaten Mississippi und Missouri ausgewählt: "STATE_NAME" LIKE 'Miss%'Das Prozentzeichen (%) kann für eine beliebige Anzahl an 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'Prozentzeichen und Unterstrich können mit allen dateibasierten Daten oder Mehrbenutzer-Geodatabase-Daten verwendet werden. Der Operator LIKE kann mit Zeichendaten auf beiden Seiten des Ausdrucks verwendet werden. 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) LIKE '8%'Soll die Suchzeichenfolge ein Prozentzeichen oder einen Unterstrich enthalten, bestimmen Sie mit dem Schlüsselwort "ESCAPE" ein anderes Zeichen als 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 '$'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 (?). Das Nummernzeichen (#) wird ebenfalls als Platzhalter für eine einzelne Ziffer (einen numerischen Wert) verwendet. Durch die folgende Abfrage werden beispielsweise die Flurstücknummern "A1,", "A2," usw. aus einer Personal-Geodatabase zurückgegeben: [PARCEL_NUMBER] LIKE 'A#' |
Logische Operatoren
Operator |
Beschreibung |
---|---|
UND |
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 |
ODER |
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' |
Funktionen
Im Folgenden finden Sie eine vollständige Liste der Funktionen, die von File-Geodatabases, Shapefiles, Coverages und anderen dateibasierten Datenquellen unterstützt werden. Sie werden auch von Personal- und ArcSDE-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 Personal- und ArcSDE-Geodatabases weitere Optionen. Informationen hierzu finden Sie in der DBMS-Dokumentation.
Datumsfunktionen
Funktion |
Beschreibung |
---|---|
CURRENT_DATE |
Das aktuelle Datum wird zurückgegeben. |
EXTRACT(extract_fieldFROM extract_source) |
Hiermit wird der Teil extract_field von extract_source zurückgegeben. 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 | Die aktuelle Zeit wird zurückgegeben. |
Zeichenfolgefunktionen
Bei den Argumenten, die als string_exp gekennzeichnet sind, kann es sich um den Namen einer Spalte, ein Zeichenfolgenliteral oder das Ergebnis einer anderen Skalarfunktion handeln. Der zugrunde liegende Datentyp kann als Zeichentyp dargestellt werden.
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 Zeichenfolgefunktionen basieren auf 1, d. h. beim ersten Zeichen der Zeichenfolge handelt es sich um das Zeichen 1.
Funktion |
Beschreibung |
---|---|
CHAR_LENGTH(string_exp) |
Gibt die Länge des String-Ausdrucks in Zeichen zurück. |
CONCAT(string_exp1, string_exp2) |
Gibt eine Zeichenfolge zurück, der sich aus der Verknüpfung von string_exp2 mit string_exp1 ergibt. |
LOWER(string_exp) |
Gibt einen String 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 dem Maßstab 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 des Strings entfernt wurde. |
UPPER(string_exp) |
Gibt einen String zurück, der mit string_exp identisch ist und in dem alle Kleinbuchstaben in Großbuchstaben konvertiert wurden. |
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 den Namen einer Spalte, das Ergebnis einer anderen Skalarfunktion oder ein numerisches Literal handeln, wobei der zugrunde liegende Datentyp als numerischer Typ dargestellt werden kann.
Funktion |
Beschreibung |
---|---|
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, der größer als oder gleich numeric_exp ist, zurück. |
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 aufgerundet. |
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 verkürzt. |
Die Funktion CAST
Mit der Funktion CAST wird ein Wert in einen angegebenen Datentyp konvertiert. Folgende Syntax wird verwendet:
CAST(exp AS data_type)
Das Argument exp kann den Namen einer Spalte, das Ergebnis einer anderen Skalarfunktion oder ein Literal darstellen. Der Datentyp (Data_type) kann eines der folgenden Schlüsselwörter sein, die in Groß- oder Kleinbuchstaben angegeben werden können: CHAR, VARCHAR, INTEGER, SMALLINT, REAL, DOUBLE, DATE, TIME, DATETIME, NUMERIC oder DECIMAL.
Weitere Informationen zur Funktion "CAST" finden Sie unter CAST und CONVERT.