Funções SQL padronizadas no ArcGIS Online

O ArcGIS Online exige que os desenvolvedores utilizem consultas de SQL padronizadas ao consultar camadas de feição hospedadas. Isto facilita para os desenvolvedores e aplicativos consultarem camadas de feição hospedadas e ajuda a prevenir ataques de injeção do SQL. Todos os aplicativos do ArcGIS suportam automaticamente 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 onde, 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, também não são suportadas.

Quais funções de SQL são 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, oArcGIS Online as converte para ajustar às especificações do banco de dados utilizadas pela camada de feição.

Funções de data

FunçãoDescrição

CURRENT_DATE()

Retorna a data atual no horário UTC.

O que você vê no cliente depende do cliente que você está utilizando. 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 que você vê no cliente depende do cliente que você está utilizando. 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 que você vê no cliente depende do cliente que você está utilizando. 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 ano, mês, dia, hora e minuto.

Exemplos

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

Funções numéricas

FunçãoDescrição

ABS(<number>)

Retorna o valor absoluto (positivo) do número que você especificar.

CEILING(<number>)

Retorna o menor inteiro maior que, ou igual ao número especificado.

Exemplo

  • CEILING(12.93)—o resultado é 13.

COS(<number>)

Retorna o co-seno trigonométrico de <number>, que é assumido para ser um ângulo em radianos.

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.

FLOOR(<number>)

Retorna o maior inteiro que é menor ou igual ao número especificado.

Exemplo

  • FLOOR(12.93)—o resultado é 12.

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:

  • MOD(10, 4)—o resultado é 2.
  • MOD(CAST(DBLFIELD AS INT), 4)DBLFIELD é um campo do tipo duplo, então a função CAST é necessária para converter valores duplos para inteiro.

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>).

ROUND(<number> , <length>)

Arredonda o número especificado para o comprimento especificado.

Se você utilizar um número positivo para <length>, o número será arredondado para a posição decimal especificada por <length>. Quando <length> é um número negativo, o <number> especificado é arredondado no lado esquerdo do ponto decimal.

Exemplos

  • ROUND(10.9934,2)—retorna 10.99.
  • ROUND(10.9964,2)—retorna 11.00.
  • ROUND(111.0,-2)—retorna 100.00.

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.

Exemplos

  • TRUNCATE(111.996,2)—retorna 111.99.
  • TRUNCATE(111.996,-2)—retorna 100.00.

Funções de string

FunçãoDescrição

CHAR_LENGTH(<string>)

Retorna o número de caracteres na string especificada. O resultado é um inteiro.

Exemplo

  • CHAR_LENGTH('Redlands')—o resultado é 8.

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.

Exemplos

  • CONCAT('A', 'B')—o resultado é 'AB'.
  • CONCAT('A', CONCAT(':', 'B'))—o resultado é 'A:B'.

Os valores nulos são convertidos em uma string vazia.

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.

Exemplos

  • POSITION('boat', 'Sailboat')—o resultado é 5.
  • POSITION('motor', 'Sailboat')—o resultado é 0.

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.

Exemplos

  • SUBSTRING('Sailboat', 5, 4)—o resultado é 'boat'.
  • SUBSTRING('Sailboat', 1, 4)—o resultado é 'Sail'.
  • SUBSTRING('Sailboat', 5, 100)—o resultado é 'boat'.

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

Retorna uma string onde todos os espaços iniciais ou finais são removidos da string especificada.

Exemplo

  • TRIM(BOTH ' ' FROM ' San Bernardino ')—o resultado é 'San Bernardino'.

Note que o segundo parâmetro são duas aspas únicas com um espaço entre elas.

UPPER(<string>)

Retorna uma string onde todos os caracteres são convertidos em letra maiúscula.

Exemplo

  • UPPER('Sailboat')—o resultado é 'SAILBOAT'.

LOWER(<string>)

Retorna uma string onde todos os caracteres são convertidos em letra minúscula.

Exemplo

  • LOWER('Sailboat')—o resultado é 'sailboat'.