Fonctions SQL standardisées dans ArcGIS Online

ArcGIS Online oblige les développeurs à utiliser des requêtes SQL standardisées lorsqu’ils interrogent des couches d’entités hébergées. Cela facilite l'interrogation des couches d'entités hébergées par les développeurs et les applications et permet d'empêcher les attaques par injection de code SQL. Toutes les applications ArcGIS prennent automatiquement en charge les requêtes SQL standard.

Limites des requêtes standardisées

  • Les requêtes standardisées sont appliquées à l’organisation dans son intégralité. Elles ne peuvent pas être désactivées pour certaines couches.
  • Les requêtes standardisées ne sont pas prises en charge sur les jointures entre différents espaces de travail.
  • Les sous-requêtes sous forme de clause WHERE, par exemple POP_2010 = (SELECT min(POP_2010) FROM counties, ne sont pas prises en charge.
  • Les requêtes provenant de services de base de données, par exemple, Microsoft Azure SQL Database, ne sont pas non plus prises en charge.

Fonctions SQL prises en charge dans ArcGIS Online

Si vous développez des applications et que vous utilisez la syntaxe de clause WHERE spécifique à la base de données, vous devez mettre à jour les clauses WHERE du code de votre application pour qu'elles utilisent la syntaxe SQL normale prise en charge par ArcGIS Online. Les tables suivantes présentent les fonctions SQL prises en charge, ainsi que leur syntaxe respective. Lorsque les fonctions et la syntaxe suivantes sont utilisées dans vos applications, ArcGIS Online les convertit pour qu'elles respectent la spécification de la base de données utilisée par la couche d'entités.

Fonctions de date

FonctionDescription

CURRENT_DATE()

Renvoie la date actuelle en heure UTC.

Ce que vous voyez dans le client dépend du client que vous utilisez. Dans ArcGIS Online, les dates s’affichent dans le fuseau horaire de votre organisation ou de votre profil.

CURRENT_TIME()

Renvoie la date et l'heure UTC actuelles (heures, minutes, secondes).

Ce que vous voyez dans le client dépend du client que vous utilisez. Dans ArcGIS Online, l’heure s’affiche dans l’heure locale de votre organisation ou de votre profil.

CURRENT_TIMESTAMP()

Renvoie la date et l'heure UTC actuelles (heures, minutes, secondes, millisecondes).

Ce que vous voyez dans le client dépend du client que vous utilisez. Dans ArcGIS Online, l’heure s’affiche dans l’heure locale de votre organisation ou de votre profil.

EXTRACT(<unit> FROM <date>)

Renvoie une seule partie (<unit>) de l’élément <date> spécifié. Les valeurs possibles de <unit> incluent, sans s’y limiter, l’année, le mois, le jour, l’heure et la minute.

Exemples

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

Fonctions numériques

FonctionDescription

ABS(<number>)

Renvoie la valeur absolue (positive) du nombre que vous spécifiez.

CEILING(<number>)

Renvoie le plus petit nombre entier supérieur ou égal au nombre spécifié.

Exemple

  • CEILING(12.93) : le résultat est 13.

COS(<number>)

Renvoie le cosinus trigonométrique de <number>, qui est censé être un angle en radians.

CAST(<number> AS FLOAT | INT)

Convertit un nombre en un type différent. FLOAT convertit le nombre spécifié en une valeur double et INT le convertit en un nombre entier.

FLOOR(<number>)

Renvoie le plus grand nombre entier qui est inférieur ou égal au nombre spécifié.

Exemple

  • FLOOR(12.93) : le résultat est 12.

LOG(<number>)

Logarithme naturel du nombre spécifié.

LOG10(<number>)

Logarithme de base 10 du nombre spécifié.

MOD(<number>, <n>)

Renvoie le reste une fois le dividende (<nombre>) divisé par le diviseur <n>. <n> et <nombre> doivent tous les deux être de type entier.

Voici quelques exemples :

  • MOD(10, 4) : le résultat est 2.
  • MOD(CAST(DBLFIELD AS INT), 4) : DBLFIELD étant un champ de type double, la fonction CAST est nécessaire pour convertir les valeurs doubles en valeurs entières.

NULLIF(<number>, <value>)

Renvoie null si le nombre spécifié est égal à la valeur spécifiée. NULLIF est fréquemment utilisé pour éviter les erreurs de division par zéro en définissant <value> sur 0.

Dès qu’un calcul rencontre une valeur de champ null dans un de ses arguments, le résultat du calcul est null.

Supposons par exemple que vous deviez calculer un champ double devant être TOTALPOP divisé par POP18. Si une entité possède une valeur POP18 égale à zéro, le calcul génère une erreur de division par zéro. Vous pouvez créer un filtre pour masquer les enregistrements où POP18 est égal à zéro, puis effectuer le calcul. Il est plus rapide d’utiliser NULLIF.

  • TOTALPOP / NULLIF(POP18, 0) : renvoie null si POP18 est égal à zéro ; sinon, renvoie la valeur de TOTALPOP / POP18.

POWER(<number> , <y>)

Renvoie la valeur du nombre spécifié élevée à la puissance indiquée (<y>).

ROUND(<number> , <length>)

Arrondit le nombre que vous spécifiez à la longueur spécifiée.

Si <length> est un nombre positif, le nombre est arrondi à la position décimale spécifiée par <length>. Lorsque <length> est un nombre négatif, le <number> spécifié est arrondi à gauche du séparateur décimal.

Exemples

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

SIN(<number>)

Renvoie le sinus trigonométrique du <number> spécifié, qui est censé être un angle en radians.

TAN(<number>)

Renvoie la tangente du <number> spécifié, qui est censé être un angle en radians.

TRUNCATE(<number>,<decimal_place>)

Tronque <number> au <decimal_place> spécifié.

Un <decimal_place> positif tronque à la position décimale spécifiée. Lorsque <decimal_place> est un nombre négatif, <number> est arrondi à gauche du séparateur décimal.

Exemples

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

Fonctions de chaîne

FonctionDescription

CHAR_LENGTH(<string>)

Renvoie le nombre de caractères dans la chaîne spécifiée. Le résultat est un entier.

Exemple

  • CHAR_LENGTH('Redlands') : le résultat est 8.

CONCAT(<string1>, <string2>)

Concatène deux valeurs de chaîne.

Deux chaînes uniquement peuvent être fournies. Pour concaténer plus de deux chaînes, imbriquez plusieurs fonctions CONCAT consécutives, comme indiqué ci-après.

Exemples

  • CONCAT('A', 'B') : le résultat est 'AB'.
  • CONCAT('A', CONCAT(':', 'B')) : le résultat est 'A:B'.

Les valeurs Null sont converties en chaîne vide.

POSITION(<substring>, <string>)

Renvoie la position de la première occurrence de la sous-chaîne spécifiée dans la chaîne que vous spécifiez. Si la sous-chaîne spécifiée est introuvable, le résultat est 0.

Exemples

  • POSITION('boat', 'Sailboat') : le résultat est 5.
  • POSITION('motor', 'Sailboat') : le résultat est 0.

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

Renvoie une partie d’une valeur de chaîne ; <start> est un index entier qui indique l’endroit où les caractères renvoyés débutent et <length> désigne le nombre de caractères à renvoyer.

Exemples

  • SUBSTRING('Sailboat', 5, 4) : le résultat est 'boat'.
  • SUBSTRING('Sailboat', 1, 4) : le résultat est 'Sail'.
  • SUBSTRING('Sailboat', 5, 100) : le résultat est 'boat'.

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

Renvoie une chaîne dans laquelle tous les espaces de début ou de fin sont supprimés de la chaîne que vous spécifiez.

Exemple

  • TRIM(BOTH ' ' FROM ' San Bernardino ') : le résultat est 'San Bernardino'.

Notez que le second argument correspond à deux guillemets simples séparés par un espace.

UPPER(<string>)

Renvoie une chaîne où tous les caractères sont convertis en majuscules.

Exemple

  • UPPER('Sailboat') : le résultat est 'SAILBOAT'.

LOWER(<string>)

Renvoie une chaîne où tous les caractères sont convertis en minuscules.

Exemple

  • LOWER('Sailboat') : le résultat est 'sailboat'.