ArcGIS Online richiede agli sviluppatori di utilizzare interrogazioni SQL standardizzate quando utilizzano i feature layer ospitati. L'uso d'interrogazioni SQL standardizzate aiuta a prevenire attacchi SQL injection. Tutte le applicazioni ArcGIS supportano le interrogazioni 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.
Funzioni SQL supportate in ArcGIS Online
Gli sviluppatori di app che attualmente utilizzano una sintassi di clausola 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 che seguono vengono utilizzate nelle app, vengono convertite da ArcGIS Online per la conformità alle specifiche del database utilizzate dal feature layer.
Funzioni data
Funzione | Descrizione |
---|---|
CURRENT_DATE() | Restituisce la data corrente nel fuso UTC. Il valore visualizzato dipende dal client in uso. 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). Il valore visualizzato dipende dal client in uso. 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). Il valore visualizzato dipende dal client in uso. 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 possibili valori di <unit> includono, ma non sono limitati a, year, month, day, hour e minute. I seguenti esempi estraggono diverse unità dal valore di data e ora 2016-12-21 15:11:
|
Funzioni numeriche
Funzione | Descrizione |
---|---|
ABS(<number>) | Restituisce il valore assoluto (positivo) del numero specificato. |
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. Nel primo esempio seguente, il numero viene convertito in un numero intero. Poiché si tratta di numeri interi, il risultato è 1424. Nel secondo esempio, un intero viene convertito in float, risultando in un numero con posizioni decimali: 1424,0
|
CEILING(<number>) | Restituisce il numero intero più piccolo maggiore o uguale al numero specificato. Il seguente esempio restituisce 13: CEILING(12.93) |
COS(<number>) | Restituisce il coseno trigonometrico di <number>, che si presume sia un angolo in radianti. |
FLOOR(<number>) | Restituisce il valore intero massimo minore o uguale al numero specificato. Il seguente esempio restituisce 12: FLOOR(12.93) |
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:
|
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>). L'esempio seguente restituisce 32768: POWER(8,5) |
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 a destra del punto decimale. Quando <length> è un numero negativo, il <number> specificato viene arrotondato sul lato sinistro della virgola decimale. Di seguito sono riportati alcuni esempi:
|
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. Nel primo esempio, i numeri a destra della posizione decimale sono troncati per includere solo due numeri, risultando nel valore 111,99. Nel secondo esempio, i numeri a sinistra della posizione decimale sono troncati, risultando nel valore 100,00.
|
Funzioni stringa
Funzione | Descrizione |
---|---|
CAST(<string> AS DATE | TIME) | Converte la stringa in una data o in un'ora, se il valore della stringa è in un formato supportato. Se la stringa è nel formato "MM/GG/AAAA hh:mm:ss" o "AAAA-MM-GG", è possibile trasformarla in una data. Se la stringa è nel formato "HH:MM:SS", è possibile eseguire la fusione con il tipo di dati "solo tempo" (TIME). Ad esempio, la seguente stringa può essere trasformata in una data: CAST('1988-05-30' AS DATE) |
CHAR_LENGTH(<string>) | Restituisce il numero di caratteri nella stringa specificata. Il risultato è un valore intero. Ad esempio, la seguente istruzione restituisce 8: CHAR_LENGTH('Redlands') |
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. Il primo esempio seguente concatena le lettere A e B. Il secondo esempio mostra una funzione CONCAT nidificata per concatenare tre valori stringa: A, : e B.
I valori Null vengono convertiti in una stringa vuota. |
CURRENT_USER | Quando la funzione CURRENT_USER è inclusa in un'interrogazione, si comporta in modo simile a una variabile; il nome utente dell'utente che accede al feature layer ospitato o vista del feature layer ospitato viene identificato e utilizzato nell'interrogazione. Ad esempio, se l'utente, planner3, ha effettuato l'accesso all'organizzazione per accedere a una vista di feature layer ospitato che contiene la seguente definizione di interrogazione, solo le feature in cui il campo del membro del personale contiene il valore planner3 vengono restituite all'utente in connessione: staffmember=current_user Nel prossimo esempio, più valori sono memorizzati nel campo membro del personale. La seguente clausola where trova il nome utente corrente nel valore di testo del campo membro del personale, anche se vi sono memorizzati più nomi utente: where=position(current_user in staffmember)>0 |
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. Nel primo esempio seguente, il risultato è 5, poiché la prima lettera (b) della sottostringa (boat) è la quinta lettera nella stringa (Sailboat). Nel secondo esempio, il risultato è 0, poiché la sottostringa (motor) non è presente nella stringa.
|
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. Vedere i seguenti esempi:
|
TRIM(BOTH | LEADING | TRAILING ' ' FROM <string>) | Restituisce una stringa in cui tutti gli spazi iniziali e finali vengono rimossi dalla stringa specificata. Nell'esempio seguente, esiste uno spazio prima e dopo la stringa, San Bernardino. La parola chiave BOTH è utilizzata per ritagliare la stringa di spazio (indicata utilizzando due singoli punti di domanda con uno spazio tra di loro) dall'inizio e dalla fine della stringa di testo: TRIM(BOTH ' ' FROM ' San Bernardino ') Il risultato è la stringa 'San Bernardino'. |
UPPER(<string>) | Restituisce una stringa in cui tutti i caratteri vengono convertiti in maiuscolo. In questo esempio, tutte le lettere nella stringa Sailboat vengono convertite in maiuscole, risultando nella stringa 'SAILBOAT'. UPPER('Sailboat') |
LOWER(<string>) | Restituisce una stringa in cui tutti i caratteri vengono convertiti in minuscolo. Nell'esempio successivo, 'sailboat' viene restituito: LOWER('Sailboat') |