Funzioni SQL standardizzate in ArcGIS Online

ArcGIS Online richiede gli sviluppatori di utilizzare interrogazioni SQL standardizzate quando utilizzano i feature layer hosted. In questo modo gli sviluppatori e le app possono interrogare più facilmente i feature layer ospitati e prevenire attacchi SQL injection. Tutte le applicazioni ArcGIS supportano automaticamente le query SQL.

Limiti delle interrogazioni standardizzate

  • Le interrogazioni standardizzate vengono applicate all'intera organizzazione. Non possono essere disabilitate per alcuni layer.
  • Le interrogazioni standardizzate non sono supportate nelle unioni tra workspace diversi.
  • Le interrogazioni secondarie come una clausola Where, ad esempio POP_2010 = (SELECT min(POP_2010) FROM counties, non sono supportate.
  • Non sono inoltre supportate le interrogazioni da servizi di database, ad esempio Microsoft Azure SQL Database.

Quali funzioni SQL sono supportate in ArcGIS Online?

Gli sviluppatori di app che attualmente utilizzano una sintassi di clausole Where specifiche del database dovranno aggiornare tali clausole nel codice delle app per utilizzare la sintassi SQL comune supportata da ArcGIS Online. Nelle tabelle seguenti sono indicate le funzioni SQL supportate e la relativa sintassi. Se le funzioni e la sintassi vengono utilizzate nelle app, vengono convertite da ArcGIS Online per la conformità alle specifiche del database utilizzate dal feature layer.

Funzioni data

FunzioneDescrizione

CURRENT_DATE()

Restituisce la data corrente nel fuso UTC.

Ciò che viene visualizzato nel client dipende dal client che si sta utilizzando. In ArcGIS Online, le date sono mostrate nel fuso orario della tua organizzazione o profilo.

CURRENT_TIME()

Restituisce data e ora UTC correnti (ore, minuti, secondi).

Ciò che viene visualizzato nel client dipende dal client che si sta utilizzando. In ArcGIS Online, l'ora viene visualizzata nell'ora locale della tua organizzazione o profilo.

CURRENT_TIMESTAMP()

Restituisce data e ora UTC correnti (ore, minuti, secondi, millisecondi).

Ciò che viene visualizzato nel client dipende dal client che si sta utilizzando. In ArcGIS Online, l'ora viene visualizzata nell'ora locale della tua organizzazione o profilo.

EXTRACT(<unit> FROM <date>)

Restituisce una singola parte (<unit>) del <date> specificato. I valori <unit> possibili includono, ad esempio, l'anno, il mese, il giorno, l'ora e il minuto.

Esempi

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

Funzioni numeriche

FunzioneDescrizione

ABS(<number>)

Restituisce il valore assoluto (positivo) del numero specificato.

CEILING(<number>)

Restituisce il numero intero più piccolo maggiore o uguale al numero specificato.

Esempio

  • CEILING(12.93): il risultato è 13.

COS(<number>)

Restituisce il coseno trigonometrico di <number>, che si presume sia un angolo in radianti.

CAST(<number> AS FLOAT | INT)

Converte un numero in un tipo diverso. FLOAT converte il numero specificato in valore double e INT lo converte in un numero intero.

FLOOR(<number>)

Restituisce il valore intero massimo minore o uguale al numero specificato.

Esempio

  • FLOOR(12.93): il risultato è 12.

LOG(<number>)

Il logaritmo naturale del numero specificato.

LOG10(<number>)

Il logaritmo in base 10 del numero specificato.

MOD(<number>, <n>)

Restituisce il resto dopo il dividendo (<numero>) è suddiviso dal divisore <n>. Sia <n> che <numero> devono essere valori di tipo intero.

Gli esempi includono:

  • MOD(10, 4): il risultato è 2.
  • MOD(CAST(DBLFIELD AS INT), 4)DBLFIELD è un campo di tipo double, per cui è necessaria la funzione CAST per convertire i valori da double a numero intero.

NULLIF(<number>, <value>)

Restituisce null se il numero specificato è uguale al valore specificato. NULLIF generalmente viene utilizzato per impedire errori di divisione per zero impostando <value> a 0.

Ogni volta che un calcolo rileva un valore del campo null in uno degli argomenti, il risultato del calcolo è null.

Si supponga ad esempio di dover calcolare un campo di tipo double da TOTALPOP diviso per POP18. Se una feature ha un valore POP18 uguale a zero, il calcolo restituirà un errore di divisione per zero. È possibile creare un filtro per nascondere i record in cui POP18 è zero ed eseguire il calcolo. Un metodo rapido consiste nell'utilizzo di NULLIF.

  • TOTALPOP / NULLIF(POP18, 0): restituisce null se POP18 è uguale a zero, altrimenti viene restituito il valore di TOTALPOP / POP18.

POWER(<number> , <y>)

Restituisce il valore del numero specificato elevato alla potenza specificata (<y>).

ROUND(<number> , <length>)

Arrotonda il numero specificato alla lunghezza specificata.

Se si utilizza un numero positivo per <length>, il numero viene arrotondato alla posizione decimale specificata da <length>. Quando <length> è un numero negativo, il <number> specificato viene arrotondato sul lato sinistro della virgola decimale.

Esempi

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

SIN(<number>)

Restituisce il seno trigonometrico del <number> specificato, che si presume sia un angolo in radianti.

TAN(<number>)

Restituisce la tangente del <number> specificato, che si presume sia un angolo in radianti.

TRUNCATE(<number>,<decimal_place>)

Tronca il <number> al <decimal_place> specificato.

Un <decimal_place> positivo viene troncato alla posizione decimale specificata. Quando <decimal_place> è un numero negativo, il <number> viene troncato sul lato destro della virgola decimale.

Esempi

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

Funzioni stringa

FunzioneDescrizione

CHAR_LENGTH(<string>)

Restituisce il numero di caratteri nella stringa specificata. Il risultato è un valore intero.

Esempio

  • CHAR_LENGTH('Redlands'): il risultato è 8.

CONCAT(<string1>, <string2>)

Concatena due valori stringa.

È possibile specificare solo due stringhe. Per concatenare più di due stringhe, nidificare funzioni CONCAT consecutive come mostrato di seguito.

Esempi

  • CONCAT('A', 'B'): il risultato è 'AB'.
  • CONCAT('A', CONCAT(':', 'B')): il risultato è 'A:B'.

I valori Null vengono convertiti in una stringa vuota.

POSITION(<substring>, <string>)

Restituisce la posizione della prima occorrenza della sottostringa specifica nella stringa specificata. Se la sottostringa specifica non viene trovata, il risultato è 0.

Esempi

  • POSITION('boat', 'Sailboat'): il risultato è 5.
  • POSITION('motor', 'Sailboat'): il risultato è 0.

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

Restituisce una parte di un valore stringa; <start> è un indice intero che specifica l'inizio dei caratteri restituiti e <length> è il numero di caratteri da restituire.

Esempi

  • SUBSTRING('Sailboat', 5, 4): il risultato è 'boat'.
  • SUBSTRING('Sailboat', 1, 4): il risultato è 'Sail'.
  • SUBSTRING('Sailboat', 5, 100): il risultato è 'boat'.

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

Restituisce una stringa in cui tutti gli spazi iniziali e finali vengono rimossi dalla stringa specificata.

Esempio

  • TRIM(BOTH ' ' FROM ' San Bernardino '): il risultato è 'San Bernardino'.

Si noti che il secondo argomento è costituito da due virgolette singole che racchiudono uno spazio.

UPPER(<string>)

Restituisce una stringa in cui tutti i caratteri vengono convertiti in maiuscolo.

Esempio

  • UPPER('Sailboat'): il risultato è 'SAILBOAT'.

LOWER(<string>)

Restituisce una stringa in cui tutti i caratteri vengono convertiti in minuscolo.

Esempio

  • LOWER('Sailboat'): il risultato è 'sailboat'.