Funciones SQL estandarizadas en ArcGIS Online

ArcGIS Online requiere que los desarrolladores usen consultas SQL estandarizadas cuando consultan capas de entidades alojadas. Esto facilita a desarrolladores y aplicaciones la consulta a capas de entidades alojadas y ayuda a impedir ataques de inyección SQL. Todas las aplicaciones de ArcGIS admiten automáticamente las consultas SQL estándar.

Limitaciones de las consultas estandarizadas

  • Las consultas estandarizadas se aplican a toda la organización; no se pueden deshabilitar para determinadas capas.
  • Las consultas estandarizadas no se admiten en uniones entre espacios de trabajo diferentes.
  • Las subconsultas como una cláusula WHERE, por ejemplo, POP_2010 = (SELECT min(POP_2010) FROM counties, no son compatibles.
  • Las consultas de servicios de base de datos, por ejemplo, Microsoft Azure SQL Database, tampoco son compatibles.

¿Qué funciones SQL son compatibles con ArcGIS Online?

Si es un desarrollador de aplicaciones y está utilizando una sintaxis de cláusula WHERE específica de bases de datos, necesitará actualizar las cláusulas WHERE en el código de la aplicación para utilizar la sintaxis SQL común compatible con ArcGIS Online. Las siguientes tablas muestran qué funciones SQL son compatibles y la sintaxis de cada una de ellas. Cuando se utilicen las siguientes sintaxis y funciones en las aplicaciones, ArcGIS Online las convertirá para adaptarlas a la especificación de la base de datos utilizada por la capa de entidades.

Funciones de fecha

FunciónDescripción

CURRENT_DATE()

Devuelve la fecha actual en hora UTC.

Lo que ve en el cliente depende del cliente que esté usando. En ArcGIS Online, las fechas se muestran en la zona horaria de su organización o perfil.

CURRENT_TIME()

Devuelve la fecha y hora UTC (horas, minutos y segundos) actuales.

Lo que ve en el cliente depende del cliente que esté usando. En ArcGIS Online, la hora se muestra en la hora local de su organización o perfil.

CURRENT_TIMESTAMP()

Devuelve la fecha y hora UTC (horas, minutos, segundos y milisegundos) actuales.

Lo que ve en el cliente depende del cliente que esté usando. En ArcGIS Online, la hora se muestra en la hora local de su organización o perfil.

EXTRACT(<unit> FROM <date>)

Devuelve una sola parte (<unit>) del valor especificado para <date>. Entre los posibles valores de <unit> se encuentran: año, mes, día, hora y minuto.

Ejemplos

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

Funciones numéricas

FunciónDescripción

ABS(<number>)

Devuelve el valor absoluto (positivo) del número especificado.

CEILING(<number>)

Devuelve el número entero más pequeño que sea mayor o igual al número especificado.

Ejemplo

  • CEILING(12.93): devuelve 13.

COS(<number>)

Devuelve el coseno trigonométrico de <number>, que se asume que es un ángulo en radianes.

CAST(<number> AS FLOAT | INT)

Convierte un número en otro tipo distinto. FLOAT convierte el número especificado en un doble y INT lo convierte en un entero.

FLOOR(<number>)

Devuelve el número entero más grande que sea menor o igual al número especificado.

Ejemplo

  • FLOOR(12.93): devuelve 12.

LOG(<number>)

El logaritmo natural del número especificado.

LOG10(<number>)

El logaritmo de base 10 del número especificado.

MOD(<number>, <n>)

Devuelve el resto una vez se ha dividido el dividendo (<number>) entre el divisor <n>. Tanto <n> como <number> deben ser de tipo entero.

Los ejemplos incluyen lo siguiente:

  • MOD(10, 4): devuelve 2.
  • MOD(CAST(DBLFIELD AS INT), 4):DBLFIELD es un campo de tipo doble, así que es necesario usar la función CAST para convertir los valores dobles en enteros.

NULLIF(<number>, <value>)

Devuelve null si el número especificado equivale al valor especificado. NULLIF se suele utilizar para evitar errores de división entre cero poniendo <value> a 0.

Siempre que un campo encuentre un campo con valor null en cualquiera de los argumentos, el resultado del cálculo será null.

Por ejemplo, supongamos que necesita calcular un campo doble para que sea TOTALPOP dividido por POP18. Si una función tiene un valor POP18 igual a cero, el cálculo dará como resultado un error de división entre cero. Puede crear un filtro para ocultar registros en los que POP18 es igual a cero y realizar su cálculo. Un atajo sería usar NULLIF.

  • TOTALPOP / NULLIF(POP18, 0): devuelve null si POP18 es igual a cero; de lo contrario, se devuelve el valor de TOTALPOP / POP18.

POWER(<number> , <y>)

Devuelve el valor del número especificado elevado a la potencia especificada (<y>).

ROUND(<number> , <length>)

Redondea el número especificado a la longitud especificada.

Si utiliza un número positivo para <length>, el número se redondea a la posición decimal especificada por <length>. Si <length> es un número negativo, el valor de <number> especificado se redondea a la izquierda del punto decimal.

Ejemplos

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

SIN(<number>)

Devuelve el seno trigonométrico del valor de <number> especificado, que se asume que es un ángulo en radianes.

TAN(<number>)

Devuelve la tangente del valor de <number> especificado, que se asume que es un ángulo en radianes.

TRUNCATE(<number>,<decimal_place>)

Trunca <number> en el valor especificado para <decimal_place>.

Un valor positivo de <decimal_place> trunca en la posición decimal especificada. Si <decimal_place> es un número negativo, el valor de <number> se trunca a la izquierda del punto decimal.

Ejemplos

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

Funciones de cadena

FunciónDescripción

CHAR_LENGTH(<string>)

Devuelve el número de caracteres en la cadena especificada. El resultado es un entero.

Ejemplo

  • CHAR_LENGTH('Redlands'): devuelve 8.

CONCAT(<string1>, <string2>)

Concatena dos valores de cadena de caracteres.

Solo se pueden indicar dos cadenas. Para concatenar más de dos cadenas de caracteres, anide funciones CONCAT consecutivas tal como se muestra a continuación.

Ejemplos

  • CONCAT('A', 'B'): devuelve 'AB'.
  • CONCAT('A', CONCAT(':', 'B')): devuelve 'A:B'.

Los valores nulos se convierten en cadenas vacías.

POSITION(<substring>, <string>)

Devuelve la posición de la primera ocurrencia de la subcadena especificada en la cadena que usted especifica. Si no se encuentra la subcadena especificada, el resultado es 0.

Ejemplos

  • POSITION('boat', 'Sailboat'): devuelve 5.
  • POSITION('motor', 'Sailboat'): devuelve 0.

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

Devuelve una parte de un valor de cadena; <start> es un índice entero que especifica dónde empiezan los caracteres devueltos y <length> es el número de caracteres que se deben devolver.

Ejemplos

  • SUBSTRING('Sailboat', 5, 4): devuelve 'boat'.
  • SUBSTRING('Sailboat', 1, 4): devuelve 'Sail'.
  • SUBSTRING('Sailboat', 5, 100): devuelve 'boat'.

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

Devuelve una cadena de caracteres en la que se han eliminado todos los espacios anteriores y posteriores de la cadena que usted especifica.

Ejemplo

  • TRIM(BOTH ' ' FROM ' San Bernardino '): devuelve 'San Bernardino'.

Como se ve, en el segundo argumento hay espacios entre las comillas simples y el texto.

UPPER(<string>)

Devuelve una cadena de caracteres en la que todos los caracteres se han convertido en mayúsculas.

Ejemplo

  • UPPER('Sailboat'): devuelve 'SAILBOAT'.

LOWER(<string>)

Devuelve una cadena de caracteres en la que todos los caracteres se han convertido en minúsculas.

Ejemplo

  • LOWER('Sailboat'): devuelve 'sailboat'.