Standardisierte SQL-Funktionen in ArcGIS Online

In ArcGIS Online müssen Entwickler beim Abfragen gehosteter Feature-Layer standardisierte SQL-Abfragen verwenden. Dadurch können Entwickler und Apps gehostete Feature-Layer leichter abfragen und Angriffe durch Einschleusung von SQL-Befehlen verhindert werden. In allen ArcGIS-Anwendungen werden die standardmäßigen SQL-Abfragen automatisch unterstützt.

Einschränkungen bei standardisierten Abfragen

  • Standardisierte Abfragen werden auf die gesamte Organisation angewendet. Es ist nicht möglich, sie für bestimmte Layer zu deaktivieren.
  • Standardisierte Abfragen werden nicht für Verbindungen zwischen unterschiedlichen Workspaces unterstützt.
  • Unterabfragen wie eine WHERE-Klausel, beispielsweise POP_2010 = (SELECT min(POP_2010) FROM counties, werden nicht unterstützt.
  • Abfragen aus Datenbank-Services, zum Beispiel Microsoft Azure SQL Database, werden ebenfalls nicht unterstützt.

Welche SQL-Funktionen werden in ArcGIS Online unterstützt?

Wenn Sie als App momentan eine datenbankspezifische Syntax der WHERE-Klausel verwenden, müssen Sie die WHERE-Klauseln im Code der App aktualisieren und eine bekannte, von ArcGIS Online unterstützte Syntax verwenden. Aus der folgenden Tabelle geht hervor, welche SQL-Funktionen unterstützt werden und wie die jeweilige Syntax lautet. Wenn die folgenden Funktionen und die Syntax in Ihren Apps verwendet werden, konvertiert ArcGIS Online sie entsprechend den Spezifikationen der Datenbank, die von dem Feature-Layer verwendet wird.

Datumsfunktionen

FunktionBeschreibung

CURRENT_DATE()

Gibt das aktuelle Datum in UTC-Zeit zurück.

Es hängt vom verwendeten Client ab, was im Client angezeigt wird. In ArcGIS Online werden Datumsangaben in der Zeitzone Ihrer Organisation oder Ihres Profils angezeigt.

CURRENT_TIME()

Gibt das aktuelle UTC-Datum und die UTC-Uhrzeit (Stunden, Minuten, Sekunden) zurück.

Es hängt vom verwendeten Client ab, was im Client angezeigt wird. In ArcGIS Online wird die Uhrzeit in der lokalen Uhrzeit Ihrer Organisation oder Ihres Profils angezeigt.

CURRENT_TIMESTAMP()

Gibt das aktuelle UTC-Datum und die UTC-Uhrzeit (Stunden, Minuten, Sekunden, Millisekunden) zurück.

Es hängt vom verwendeten Client ab, was im Client angezeigt wird. In ArcGIS Online wird die Uhrzeit in der lokalen Uhrzeit Ihrer Organisation oder Ihres Profils angezeigt.

EXTRACT(<unit> FROM <date>)

Gibt einen Teil (<unit>) des angegebenen Datums (<date>) zurück. Mögliche Werte für <unit> sind u. a. Jahr, Monat, Tag, Stunde und Minute.

Beispiele

  • EXTRACT(MONTH FROM 12/21/2016): Ergebnis ist 12.
  • EXTRACT(DAY FROM 12/21/2016 12:00): Ergebnis ist 21.
  • EXTRACT(HOUR FROM 12/21/2016 15:00): Ergebnis ist 15.

Numerische Funktionen

FunktionBeschreibung

ABS(<number>)

Gibt den absoluten (positiven) Wert der angegebenen Zahl zurück.

CEILING(<number>)

Gibt die kleinste Ganzzahl zurück, die größer als oder gleich der angegebenen Zahl ist.

Beispiel

  • CEILING(12.93): Ergebnis ist 13.

COS(<number>)

Gibt den trigonometrischen Cosinus von <number> zurück, von dem angenommen wird, dass es sich um einen Winkel in Radianten handelt.

CAST(<number> AS FLOAT | INT)

Konvertiert eine Zahl in einen anderen Typ. FLOAT konvertiert die angegebene Zahl in einen Double-Wert und INT konvertiert sie in einen Integer.

FLOOR(<number>)

Gibt die größte Ganzzahl zurück, die kleiner als oder gleich der angegebenen Zahl ist.

Beispiel

  • FLOOR(12.93): Ergebnis ist 12.

LOG(<number>)

Der natürliche Logarithmus der angegebenen Zahl.

LOG10(<number>)

Der Logarithmus zur Basis 10 der angegebenen Zahl.

MOD(<number>, <n>)

Gibt den Rest zurück, nachdem der Dividend (<Zahl>) durch den Divisor <n> dividiert wurde. Sowohl <n> als auch <Zahl> muss vom Typ "Integer" sein.

Hier einige Beispiele:

  • MOD(10, 4): Ergebnis ist 2.
  • MOD(CAST(DBLFIELD AS INT), 4): DBLFIELD ist ein Feld vom Typ "Double", sodass die Funktion CAST benötigt wird, um Werte vom Typ "Double" in den Typ "Integer" zu konvertieren.

NULLIF(<number>, <value>)

Gibt null zurück, wenn die angegebene Zahl gleich dem angegebenen Wert ist. NULLIF wird im Allgemeinen verwendet, um Fehler vom Typ "Division durch Null" zu vermeiden, indem <value> auf 0 gesetzt wird.

Wenn bei einer Berechnung eines der Argumente ein null-Feldwert ist, ist das Ergebnis der Berechnung null.

Beispiel: Sie müssen ein Double-Feld in TOTALPOP dividiert durch POP18 umrechnen. Wenn ein POP18-Wert eines Features gleich Null ist, führt die Berechnung zu dem Fehler "Division durch Null". Sie können einen Filter erstellen, um Datensätze auszublenden, bei denen POP18 gleich Null ist, und anschließend die Berechnung durchführen. Eine einfachere Option ist die Verwendung von NULLIF.

  • TOTALPOP / NULLIF(POP18, 0): Gibt null zurück, wenn POP18 gleich Null ist. Andernfalls wird der Wert TOTALPOP / POP18 zurückgegeben.

POWER(<number> , <y>)

Gibt den Wert der angegebenen Zahl potenziert mit der angegebenen Potenz (<y>) zurück.

ROUND(<number> , <length>)

Rundet die angegebene Zahl auf die angegebene Länge.

Wenn Sie als <length> eine positive Zahl verwenden, wird die Zahl auf die in <length> angegebene Dezimalstelle gerundet. Wenn <length> eine negative Zahl ist, wird die als <number> angegebene Zahl links vom Dezimaltrennzeichen gerundet.

Beispiele

  • ROUND(10.9934,2): Ergebnis ist 10,99.
  • ROUND(10.9964,2): Ergebnis ist 11,00.
  • ROUND(111.0,-2): Ergebnis ist 100,00.

SIN(<number>)

Gibt den trigonometrischen Sinus von <number> zurück, von dem angenommen wird, dass es sich um einen Winkel in Radianten handelt.

TAN(<number>)

Gibt den Tangens von <number> zurück, von dem angenommen wird, dass es sich um einen Winkel in Radianten handelt.

TRUNCATE(<number>,<decimal_place>)

Schneidet <number> an der angegebenen Dezimalstelle (<decimal_place>) ab.

Wenn <decimal_place> positiv ist, wird bis zur angegebenen Dezimalstelle gekürzt. Wenn <decimal_place> eine negative Zahl ist, wird <number> links vom Dezimaltrennzeichen gekürzt.

Beispiele

  • TRUNCATE(111.996,2): Ergebnis ist 111,99.
  • TRUNCATE(111.996,-2): Ergebnis ist 100,00.

Zeichenfolgenfunktion

FunktionBeschreibung

CHAR_LENGTH(<string>)

Gibt die Anzahl der Zeichen in der angegebenen Zeichenfolge zurück. Das Ergebnis ist ein Ganzzahlwert.

Beispiel

  • CHAR_LENGTH('Redlands'): Ergebnis ist 8.

CONCAT(<string1>, <string2>)

Verbindet zwei Zeichenfolgewerte.

Es können nur zwei Zeichenfolgen bereitgestellt werden. Um mehr als zwei Zeichenfolgen zu verbinden, müssen aufeinanderfolgende CONCAT-Funktionen verschachtelt werden.

Beispiele

  • CONCAT('A', 'B'): Ergebnis ist 'AB'.
  • CONCAT('A', CONCAT(':', 'B')): Ergebnis ist 'A:B'.

NULL-Werte werden in eine leere Zeichenfolge konvertiert.

POSITION(<substring>, <string>)

Gibt die Position des ersten Vorkommnisses der angegebenen Teilzeichenfolge in der angegebenen Zeichenfolge zurück. Wenn die angegebene Teilzeichenfolge nicht gefunden wird, ist das Ergebnis 0.

Beispiele

  • POSITION('boat', 'Sailboat'): Ergebnis ist 5.
  • POSITION('motor', 'Sailboat'): Ergebnis ist 0.

SUBSTRING(<string>, <start>, <length>)

Gibt einen Teil eines Zeichenfolgewertes zurück. <start> ist ein Ganzzahlindex, der angibt, wo die zurückgegebenen Zeichen beginnen, und <length> ist die Anzahl der Zeichen, die zurückgegeben werden sollen.

Beispiele

  • SUBSTRING('Sailboat', 5, 4): Ergebnis ist 'boat'.
  • SUBSTRING('Sailboat', 1, 4): Ergebnis ist 'Sail'.
  • SUBSTRING('Sailboat', 5, 100): Ergebnis ist 'boat'.

TRIM(BOTH | LEADING | TRAILING ' ' FROM <string>)

Gibt eine Zeichenfolge zurück, bei der alle vor- und nachgestellten Leerstellen in der angegebenen Zeichenfolge entfernt wurden.

Beispiel

  • TRIM(BOTH ' ' FROM ' San Bernardino '): Ergebnis ist 'San Bernardino'.

Beachten Sie, dass das zweite Argument aus zwei einfachen Anführungszeichen besteht, zwischen denen sich eine Leerstelle befindet.

UPPER(<string>)

Gibt eine Zeichenfolge zurück, bei der alle Zeichen in Großbuchstaben konvertiert wurden.

Beispiel

  • UPPER('Sailboat'): Ergebnis ist 'SAILBOAT'.

LOWER(<string>)

Gibt eine Zeichenfolge zurück, bei der alle Zeichen in Kleinbuchstaben konvertiert wurden.

Beispiel

  • LOWER('Sailboat'): Ergebnis ist 'sailboat'.