File-Geodatabases ermöglichen verbesserte Analyse- und Berichtserstellungsfunktionen durch die Verwendung von Ausdrücken und Aliasnamen mithilfe der SubFields (Feldlisten)-Methode in einer Abfragedefinition. Außerdem werden ORDER BY und GROUP BY über die PostFixClause unterstützt. Bei GROUP BY können die Ausdrücke Zusammenfassungsfunktionen wie MIN, MAX und SUM enthalten.
ALIAS
Benennt eine Spalte um, sodass eine verständlichere Ausgabe entsteht.
SQL
SELECT NAME, POP1997 - POP1990 as PopChange
FROM counties ORDER BY NAME
ArcObjects
pQueryDef.SubFields = "NAME, POP1997 - POP1990 as PopChange"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY NAME"
CASE
Wertet eine Bedingungsliste aus und gibt einen von mehreren Ergebnisausdrücken zurück.
SQL
SELECT name,salary,
CASE
WHEN salary <= 2000 THEN 'low'
WHEN salary > 2000 AND salary <= 3000 THEN 'average'
WHEN salary > 3000 THEN 'high'
END AS salary_level
FROM employees
ORDER BY salary ASC
ArcObjects
pQueryDef.SubFields = "name,salary,
CASE
WHEN salary <= 2000 THEN 'low'
WHEN salary > 2000 AND salary <= 3000 THEN 'average'
WHEN salary > 3000 THEN 'high'
END AS salary_level"
pQueryDef.Tables = " employees"
pQueryDef.PostfixClause = " ORDER BY salary ASC "
COALESCE
Gibt den ersten Nicht-Null-Feldwert der Argumente zurück.
SQL
SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
Contact_Phone
FROM Contact_Info
ArcObjects
queryDef.SubFields = "Name, COALESCE(Business_Phone, Cell_Phone,
Home_Phone) Contact_Phone"
queryDef.Tables = "Contact_Info"
Contact_Info:
Name | Business_Phone | Cell_Phone | Home_Phone |
Jeff | 531-2531 | 622-7813 | 565-9901 |
Laura | NULL | 772-5588 | 312-4088 |
Peter | NULL | NULL | 594-7477 |
Ergebnis:
Name | Contact_Phone |
Jeff | 531-2531 |
Laura | 772-5588 |
Peter | 594-7477 |
AUSDRÜCKE
SQL
SELECT SIN(sunangle)
FROM sightings
ArcObjects
queryDef.SubFields = "SIN(sunangle)"
queryDef.Tables = "sightings"
SET-FUNKTIONEN
Operator | Beschreibung |
AVG | Berechnet den Durchschnitt aller Werte in der Gruppe. NULL-Werte werden ignoriert. |
COUNT(*), COUNT(Ausdruck) | COUNT(*) gibt die Anzahl der Datensätze in einer Tabelle zurück. NULL-Werte werden berücksichtigt. COUNT(Ausdruck) gibt die Anzahl der Werte im angegebenen Ausdruck zurück. NULL-Werte werden ignoriert. |
MAX | Sucht die Maximalwerte in der Gruppe. NULL-Werte werden ignoriert. |
MIN | Sucht die Minimalwerte in der Gruppe. NULL-Werte werden ignoriert. |
STDDEV, STDDEV_SAMP | Gibt die Stichprobenstandardabweichung des Ausdrucks zurück. |
STDDEV_POP | Gibt die Populationsstandardabweichung des Ausdrucks zurück. |
SUM | Sucht die Werte in der Gruppe. NULL-Werte werden ignoriert. |
VAR, VAR_SAMP | Gibt die Stichprobenvarianz des Ausdrucks zurück. |
VAR_POP | Gibt die Populationsvarianz des Ausdrucks zurück. |
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 |
FUNKTIONEN
Im Folgenden finden Sie eine vollständige Liste der Funktionen, die von File-Geodatabases unterstützt werden.
Datumsfunktionen
Funktion | Beschreibung |
CURRENT_DATE | Das aktuelle Datum wird zurückgegeben. |
EXTRACT (extract_field FROM extract_source) | Hiermit wird der extract_field-Teil 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 | Gibt die aktuelle Uhrzeit zurück. |
CURRENT_TIMESTAMP | Gibt das aktuelle Datum und die aktuelle Zeit zurück. |
Zeichenfolgefunktionen
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.
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, die 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 | TRAILINGtrim_characterFROM 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 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.
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. |
GROUP BY
Wird zum Sammeln von Daten aus mehreren Datensätzen und Gruppieren der Ergebnisse nach einer oder mehreren Spalten verwendet.
SQL
SELECT STATE_NAME, SUM(POP1990) as TotalPopulation
FROM counties
GROUP BY STATE_NAME ORDER BY STATE_NAME
ArcObjects
pQueryDef.SubFields = "STATE_NAME, SUM(POP1990) as
TotalPopulation"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "GROUP BY STATE_NAME ORDER BY
STATE_NAME"
HAVING
Eine WHERE-Klausel für GROUP BY.
SQL
SELECT department, MAX(salary) as Highest_salary
FROM employees
GROUP BY department HAVING MAX(salary) < 50000
ArcObjects
queryDef.SubFields = "department, MAX(salary) as Highest_salary"
queryDef.Tables = "employees"
pQueryDef.PostfixClause = "GROUP BY department HAVING MAX(salary)
< 50000"
JOINS
Kombiniert die Datensätze aus zwei oder mehr Tabellen.
Cross Join
SQL
SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
FROM Table1 CROSS JOIN Table2
ArcObjects
queryDef.SubFields = "Table1.name, Table1.Address, Table2.name,
Table2.Salary"
queryDef.Tables = "Table1 CROSS JOIN Table2"
Inner Join
SQL
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
INNER JOIN Table2 ON Table1.C1 = Table2.C3
ArcObjects
queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables = "Table1 INNER JOIN Table2 ON Table1.C1 =
Table2.C3"
Left Outer Join
SQL
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
LEFT OUTER JOIN Table2 ON Table1.C1 = Table2.C3
ArcObjects
queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables = "Table1 LEFT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3"
Right Outer Join
SQL
SELECT * FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3
ArcObjects
queryDef.SubFields = "*"
queryDef.Tables = "Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3"
NULLIF
NULLIF gibt NULL zurück, wenn die beiden angegebenen Parameter gleich sind, andernfalls wird der Wert des ersten Parameters zurückgegeben.
SQL
SELECT Location, NULLIF(Sales, Forecast) as Results FROM
StoreSales
ArcObjects
queryDef.SubFields = " Location, NULLIF(Sales, Forecast) as
Results"
queryDef.Tables = "StoreSales"
StoreSales:
Speicherort | Sales (Umsätze) | Forecast (Prognose) |
Redlands | 39000 | 55000 |
Palm Springs | 60000 | 61000 |
Riverside | 40000 | 40000 |
Ergebnis:
Speicherort | Results |
Redlands | 39000 |
Palm Springs | 60000 |
Riverside | NULL |
SORTIEREN NACH
Gibt die Sortierreihenfolge an. Dabei sind eine aufsteigende (ASC) oder absteigende (DESC) Reihenfolge und verschiedene Sortieroptionen möglich. Zu den Sortiertypen zählen BINARY(BIN), CASESENSITIVE(CASE) und NOCASESENSITIVE(NOCASE). Bei der BINARY-Sortierung werden sowohl die Groß- und Kleinschreibung als auch Zeichen mit Akzenten berücksichtigt. Bei CASESENSITIVE wird zwischen Groß- und Kleinschreibung unterschieden. Bei NOCASESENSITIVE wird nicht zwischen Groß- und Kleinschreibung unterschieden.
SQL
SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME
ArcObjects
pQueryDef.SubFields = "STATE_NAME, POP1990"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY STATE_NAME"
SQL
SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME COLLATE BINARY ASC
ArcObjects
pQueryDef.SubFields = "STATE_NAME, POP1990"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY STATE_NAME COLLATE BINARY
ASC"