O ArcGIS Online exige que os desenvolvedores utilizem consultas de SQL padronizadas ao consultar camadas de feição hospedadas. O uso de consultas de SQL padronizadas ajuda a evitar ataques de injeção de SQL. Todos os aplicativos ArcGIS suportam consultas de SQL padrão.
Limitações de consultas padronizadas
- As consultas padronizadas são aplicadas a sua organização inteira; elas não podem ser desativadas para algumas camadas.
- As consultas padronizadas não são suportadas em ligações entre diferentes áreas de trabalho.
- Subconsultas como uma cláusula where, por exemplo, POP_2010 = (SELECT min(POP_2010) FROM counties não são suportadas.
- Consultas de serviços do banco de dados, por exemplo, Microsoft Azure SQL Database, não são suportadas.
Funções SQL suportadas no ArcGIS Online
Se você for um desenvolvedor de aplicativos atualmente utilizando uma sintaxe da cláusula "where" do Banco de Dados específico, você precisará atualizar as cláusulas "where" no código do seu aplicativo para utilizar uma sintaxe SQL comum suportada pelo ArcGIS Online. As seguintes tabelas mostram quais funções SQL são suportadas e a sintaxe de cada uma. Quando as seguintes funções e sintaxe são utilizadas em seus aplicativos, o ArcGIS Online as converte para ajustar às especificações do banco de dados utilizadas pela camada de feição.
Funções de data
Função | Descrição |
---|---|
CURRENT_DATE() | Retorna a data atual no horário UTC. O valor exibido depende do cliente que você está usando. No ArcGIS Online, as datas são mostradas no fuso horário da sua organização ou perfil. |
CURRENT_TIME() | Retorna a data e hora atuais de UTC (horas, minutos, segundos). O valor exibido depende do cliente que você está usando. No ArcGIS Online, a hora é exibida no horário local da sua organização ou perfil. |
CURRENT_TIMESTAMP() | Retorna a data e hora atuais de UTC (horas, minutos, segundos, milissegundos). O valor exibido depende do cliente que você está usando. No ArcGIS Online, a hora é exibida no horário local da sua organização ou perfil. |
EXTRACT(<unit> FROM <date>) | Retorna uma única parte (<unit>) da <date> especificada. Os possíveis valores de <unit> incluem, mas não se limitam ao year, month, day, hour e minute. Os exemplos a seguir extraem diferentes unidades do valor de data e hora 21/12/2016 15:11:
|
Funções numéricas
Função | Descrição |
---|---|
ABS(<number>) | Retorna o valor absoluto (positivo) do número que você especificar. |
CAST(<number> AS FLOAT | INT) | Converte um número para um tipo diferente. FLOAT converte o número especificado para um duplo e INT converte para um inteiro. No primeiro exemplo abaixo, o número é convertido em um inteiro. Como números inteiros são números inteiros, o resultado é 1424. No segundo exemplo, um inteiro é convertido em um flutuante, o que resulta em um número com casas decimais, 1424,0
|
CEILING(<number>) | Retorna o menor inteiro maior que, ou igual ao número especificado. O exemplo a seguir retorna 13: CEILING(12.93) |
COS(<number>) | Retorna o co-seno trigonométrico de <number>, que é assumido para ser um ângulo em radianos. |
FLOOR(<number>) | Retorna o maior inteiro que é menor ou igual ao número especificado. O seguinte exemplo retorna 12: FLOOR(12.93) |
LOG(<number>) | O logaritmo natural do número especificado. |
LOG10(<number>) | O logaritmo de base 10 do número especificado. |
MOD(<number>, <n>) | Retorna o restante após o dividendo (<number>) ser dividido pelo divisor <n>. Ambos <n> e <number> devem ser do tipo inteiro. Os exemplos incluem o seguinte:
|
NULLIF(<number>, <value>) | Retorna null se o número especificado for igual ao valor especificado. NULLIF é comumente utilizado para evitar erros de divisão por zero configurando <value> para 0. Sempre que um cálculo encontrar um valor de campo null em alguns dos seus parâmetros, o resultado do cálculo será null. Por exemplo, suponha que você precise calcular um campo duplo para ser TOTALPOP dividido por POP18. Se qualquer feição tiver um valor POP18 igual a zero, o cálculo resultará em um erro de divisão por zero. Você pode criar um filtro para ocultar registros onde POP18 é zero, e executar seu cálculo. Um atalho é utilizar NULLIF: TOTALPOP / NULLIF(POP18, 0)—retorna null se POP18 for igual a zero; caso contrário, o valor de TOTALPOP / POP18 será retornado. |
POWER(<number> , <y>) | Retorna o valor do número especificado elevado à potência especificada (<y>). O seguinte exemplo retorna 32768: POWER(8,5) |
ROUND(<number> , <length>) | Arredonda o número especificado para o comprimento especificado. Se você usar um número positivo para <length>, o número será arredondado para a posição decimal à direita do ponto decimal. Quando <length> é um número negativo, o <number> especificado é arredondado no lado esquerdo do ponto decimal. Exemplos são os seguintes:
|
SIN(<number>) | Retorna o seno trigonométrico do <number> especificado, que é assumido como sendo um ângulo em radianos. |
TAN(<number>) | Retorna a tangente do <number> especificado, que é assumido como sendo um ângulo em radianos. |
TRUNCATE(<number>,<decimal_place>) | Trunca o <number> na <decimal_place> especificada. Uma <decimal_place> positiva trunca para a posição decimal especificada. Quando <decimal_place> é um número negativo, o <number> é truncado no lado esquerdo do ponto decimal. No primeiro exemplo, os números à direita da casa decimal são truncados para incluir apenas dois números, resultando no valor 111,99. No segundo exemplo, os números à esquerda da casa decimal são truncados, resultando no valor 100,00.
|
Funções de string
Função | Descrição |
---|---|
CAST(<string> AS DATE | TIME) | Converte a string em uma data ou hora se o valor da string estiver em um formato suportado. Se a string estiver no formato 'MM/DD/YYYY hh:mm:ss' ou 'YYYY-MM-DD', você pode lançá-la para uma data. Se a string estiver no formato 'HH:MM:SS', você pode convertê-lo para o tipo de dados somente tempo (TIME). Por exemplo, a seguinte string pode ser convertida em uma data: CAST('1988-05-30' AS DATE) |
CHAR_LENGTH(<string>) | Retorna o número de caracteres na string especificada. O resultado é um inteiro. Por exemplo, a seguinte instrução retorna 8: CHAR_LENGTH('Redlands') |
CONCAT(<string1>, <string2>) | Concatena dois valores de string. Somente duas strings podem ser fornecidas. Para concatenar mais de duas strings, insira funções CONCAT consecutivas como mostrado abaixo. O primeiro exemplo abaixo concatena as letras A e B. O segundo exemplo mostra uma função CONCAT agrupada para concatenar três valores de string, A, : e B.
Os valores nulos são convertidos em uma string vazia. |
CURRENT_USER | Quando a função CURRENT_USER é incluída em uma consulta, ela age de forma semelhante a uma variável; o nome de usuário do usuário que acessa a camada de feição hospedada ou a visualização da camada de feição hospedada é identificado e usado na consulta. Por exemplo, se o usuário planner3 estiver conectado à organização para acessar uma exibição de camada de feição hospedada que contém a seguinte definição de consulta, somente as feições em que o campo staffmember contém o valor planner3 serão retornados ao usuário conectado: staffmember=current_user No próximo exemplo, vários valores são armazenados no campo staffmember. A cláusula a seguir where encontrará o nome de usuário atual no valor de texto no campo staffmember, mesmo que vários nomes de usuário estejam armazenados no campo: where=position(current_user in staffmember)>0 |
POSITION(<substring>, <string>) | Retorna a posição da primeira ocorrência da substring especificada na string que você especificar. Se substring especificada não for localizada, o resultado será 0. No primeiro exemplo abaixo, o resultado é 5 pois a primeira letra (b) da substring (boat) é a quinta letra na string (Sailboat). No segundo exemplo, o resultado é 0, pois a substring (motor) não está presente na string.
|
SUBSTRING(<string>, <start>, <length>) | Retorna uma parte de um valor de string; <start> é um índice inteiro especificando onde iniciam os caracteres retornados e <length> é o número de caracteres para ser retornado. Veja os seguintes exemplos:
|
TRIM(BOTH | LEADING | TRAILING ' ' FROM <string>) | Retorna uma string onde todos os espaços iniciais ou finais são removidos da string especificada. No exemplo a seguir, há um espaço antes e depois da string San Bernardino. A palavra-chave BOTH é usada para cortar a sequência de espaços (indicada por duas aspas simples com um espaço entre elas) do início e do fim da sequência de texto: TRIM(BOTH ' ' FROM ' San Bernardino ') Isso retorna a string 'San Bernardino'. |
UPPER(<string>) | Retorna uma string onde todos os caracteres são convertidos em letra maiúscula. Neste exemplo, todas as letras da string Sailboat são convertidas em maiúsculas, resultando na string 'SAILBOAT': UPPER('Sailboat') |
LOWER(<string>) | Retorna uma string onde todos os caracteres são convertidos em letra minúscula. No próximo exemplo, 'sailboat' é retornado: LOWER('Sailboat') |