Calcular valores de campo

Los cálculos de campos permiten al propietario de la capa de entidades alojada o al administrador de la organización modificar los valores de cada fila en un solo campo en la tabla de atributos de una capa.

Por ejemplo, si usted tiene una capa de entidades alojada que almacena información sobre ventas inmobiliarias (incluidos el precio de venta y el tipo impositivo de la ubicación del inmueble), podría agregar un campo a la capa para almacenar estimaciones de impuestos sobre bienes inmuebles. Para rellenar el campo estimated_property_taxes, defina una expresión de cálculo para el campo que tome los valores del campo sale_price y los multiplique por los valores de tax_rate.

Tiene dos opciones al escribir expresiones de cálculo en campos de capas que se encuentran en una capa de entidades alojada:

  • ArcGIS Arcade: Arcade es ideal para cálculos que requieren más funcionalidad que SQL, ya que Arcade otorga acceso a valores de atributos y geometría de entidades; de esta forma, puede crear expresiones que incluyan operaciones espaciales. Además, si se produce un error durante los cálculos de una fila en concreto, es posible detener el proceso, solucionar el problema y reiniciar los cálculos después de corregirlo.

    Nota:

    ArcGIS API for JavaScript 3.44 y posterior no se actualizará con las últimas funciones lingüísticas de ArcGIS Arcade. Las expresiones de Arcade creadas en aplicaciones API de JavaScript de la versión 3.44 o posterior solo serán compatibles con las funciones lingüísticas de Arcade introducidas en la versión 1.21 o anterior de Arcade. Para obtener más información sobre la compatibilidad lingüística de Arcade con los productos ArcGIS, consulte la matriz de versiones Arcade.

  • SQL: úselo si desea obtener el rendimiento más rápido con cálculos que se pueden realizar con expresiones de SQL estandarizadas (SQL-92) en atributos no espaciales. Es posible ejecutar SQL en capas de entidades alojadas con la sincronización habilitada y en capas configuradas para rastrear a creadores y editores de entidades; por el contrario, no se pueden ejecutar expresiones de Arcade en dichas capas.

La siguiente sección explica cómo calcular valores para un campo desde la página del elemento de una capa de entidades alojada. Las secciones subsiguientes proporcionan ejemplos de cálculos comunes.

Calcular los valores de un campo desde la página del elemento

Siga estos pasos para calcular valores de cadena de caracteres, numéricos o de fecha en un campo de la página de elementos de una capa de entidades.

Nota:

Los cálculos de campo no se pueden deshacer. Por este motivo, se recomienda agregar un campo, calcularle valores y confirmar que el cálculo es lo que usted desea. De ser así, entonces pude calcular el campo original para que equivalga al campo agregado. Una vez haya confirmado que los valores son correctos en el campo original, puede eliminar el campo que agregó.

  1. Desde la página del elemento de la capa, haga clic en la pestaña Datos para mostrar la tabla.
  2. Haga clic en la columna que contenga los valores desee calcular.
  3. Realice una de las siguientes acciones para abrir el cuadro de diálogo Calcular campo:
    • Haga clic en Calcular.
    • Haga clic en Mostrar vista detallada > Calcular.
  4. Seleccione el lenguaje que desea usar en el cálculo, ya sea Arcade o SQL.

    Si la capa de entidades alojada tiene la sincronización habilitada o está configurada para rastrear a quienes crean y actualizan entidades, no ve esta página. En su lugar, aparece la ventana de SQL.

  5. Forme una expresión de cálculo.
    • Para SQL, use operadores básicos, una lista de campos y funciones. Haga clic en el botón Validar para garantizar que la expresión no contenga errores. Si la expresión no es válida, haga clic en el botón Eliminar y forme una expresión nueva. Cuando la expresión esté completada y sea válida, haga clic en Calcular.
    • Para Arcade, use variables globales, funciones y constantes. Haga clic en Aceptar para ejecutar la expresión. Si se produce un error mientras se ejecuta la expresión, haga clic en Revisar error para abrir la ventana de la expresión y corregir el error. De lo contrario, haga clic en Cancelar. Si corrige la expresión y la vuelve a ejecutar, los cálculos empiezan de nuevo.

El tiempo que tarda el cálculo en completarse depende de la complejidad de la expresión y del número de entidades de la capa.

Cálculos de ejemplo

Las siguientes secciones proporcionan sintaxis de ejemplo para realizar cálculos comunes en ArcGIS Online.

Realizar una operación matemática con los valores numéricos de dos campos existentes para rellenar un tercer campo

Uno de los cálculos más comunes que se realizan es derivar un nuevo valor numérico basado en los valores existentes de la capa de entidades. Por ejemplo, puede restar el total de ventas de un año de todas sus tiendas del total de ventas de otro año para conocer la diferencia de ganancias de un año al siguiente, o puede dividir el número total de residentes menores de 18 años entre la población total para determinar la fracción de la población menor de 18 años.

Ejemplos de Arcade

Calcular la diferencia entre los valores de dos campos numéricos, Sales2016 y Sales2017, para rellenar un campo numérico.

$feature.Sales2016 - $feature.Sales2017

Ejemplos de SQL

Rellene un campo numérico con un número decimal que sea el resultado de calcular qué parte de la población es menor de 18 años.

PopUnder18/TotalPop

Concatene los valores de cadena de caracteres de los campos existentes a un nuevo campo de cadena de caracteres.

Otro cálculo que rellena un nuevo campo implica la combinación de los valores de los campos de cadena de caracteres existentes. Por ejemplo, puede tener dos campos de cadena de caracteres para la ubicación de la habitación de un hotel, Piso y Habitación, y desea combinarlos en un campo de cadena de caracteres que contenga ambos.

En los siguientes ejemplos, los valores de los campos Piso y Habitación se combinan en un solo campo.

Ejemplo de Arcade

Concatenate($feature.room,$feature.floor)

Ejemplo de SQL

CONCAT(Floor,Room)

Eliminar los espacios anteriores y posteriores de los campos de cadena de caracteres

Cuando los usuarios escriben o pegan valores en un campo cuando están editando, pueden cometer errores y dejar un espacio al principio o al final del texto. Estos errores se pueden eliminar recortando los valores.

En estos ejemplos, sabe que el editor agregó un espacio final al pegar New Hampshire en el campo que almacena los nombres de los estados, por lo que recortará el espacio al final de la cadena de caracteres.

Ejemplo de Arcade

Trim('New Hampshire ')

Ejemplo de SQL

Trim(TRAILING ' ' FROM 'New Hampshire ')

Rellenar un campo con diferentes valores en función de los valores de otro campo

A veces, el valor que desea que se agregue a un campo varía según la entidad y depende de otro valor para la misma entidad. Por ejemplo, puede agregar un campo de cadena de caracteres a la capa de entidades para almacenar texto que describa el valor de la cadena de caracteres numérica o abreviada de otro campo. Use Arcade para este tipo de cálculos, ya que la interfaz de cálculo de SQL no los admite.

Ejemplo de Arcade

El siguiente ejemplo escribe condicionalmente distintos valores de cadena de caracteres –None, Low, High u Other– en un campo de texto en función de un número en otro campo de la capa (HowMany).

When(
  $feature.HowMany == 0, "None",
  $feature.HowMany == 1, "Low",
  $feature.HowMany == 2,  "High",
"Other")

Reemplazar un valor con otro

Si necesita reemplazar un valor existente por otro, por ejemplo, si la forma en que representa un valor concreto ha cambiado o si necesita corregir los valores mal escritos, puede encontrar todos los valores existentes para un campo y reemplazarlos por un nuevo valor. Use Arcade para este tipo de cálculos, ya que la interfaz de cálculo de SQL no los admite.

Precaución:

Los cálculos se guardan inmediatamente en la capa de entidades. Si se sobrescribe un valor existente por error, se debe volver a calcular para volver a cambiar el valor.

Ejemplo de Arcade

Este ejemplo utiliza la función Reemplazar para cambiar la ortografía británica (color) por la ortografía estadounidense.

Replace($feature.color, 'colour', 'color')

Determinar la densidad de un atributo numérico por área de entidades

Use una expresión de Arcade para calcular la densidad de un atributo dentro de un área, ya que desde la interfaz de cálculo no se pueden realizar cálculos de SQL en el campo espacial.

Ejemplo de Arcade

Este ejemplo determina la densidad de población por entidad al dividir el valor de la población total (TotalPop) por el área en millas cuadradas de la entidad poligonal:

$feature.TotalPop / Area ($feature,
'square-miles')

Derivar las coordenadas de una entidad de puntos

Para devolver las coordenadas de longitud o latitud de los campos espaciales de una capa de entidades alojada que contenga solo puntos, puede usar una expresión de Arcade.

El campo espacial de la interfaz de cálculo no admite este tipo de cálculo.

Ejemplo de Arcade

Este ejemplo calcula un campo respecto a la coordenada x de cada punto de una capa de puntos usando la función Geometría.

Geometry($feature).x

Agregar tiempo a una fecha o restar tiempo de una fecha

Es recomendable agregar o restar tiempo de un campo de fecha o un valor literal de fecha para generar un campo de fecha actualizado. Por ejemplo, puede calcular una fecha de inspección o revisión futura agregando tiempo a una fecha.

Ejemplo de Arcade

Este ejemplo utiliza la función DateAdd para agregar siete días a una fecha y obtener la fecha de la semana siguiente.

var startDate = Date($feature.dateField);
var oneWeekLater = DateAdd(startDate, 7, 'days');
return oneWeekLater;

Ejemplos de SQL

Los cálculos siguientes se pueden utilizar para agregar o restar tiempo de un campo de fecha o usando un valor literal de fecha admitido por SQL. En el primero se utilizan campos de fecha y en el segundo se utilizan valores literales de fecha. También se pueden utilizar campos numéricos y literales de número. Se admite cualquier combinación de campos y literales, tal y como se muestra en el tercer y cuarto cálculo.

<DateField> +/- <NumberField> = updated date
DATE'<SQL-supported Date Literal>'  +/- <Number of Days> = updated date
<DateField> +/- <Number of Days> = updated date
DATE'<SQL-supported Date Literal >'  +/- <NumberField> = updated date

El campo de fecha calculado es la fecha original más o menos el número de días que desee agregar o restar. El número de días puede ser un número entero y también puede incluir una fracción; por ejemplo, 1,5 representaría un día y medio o 36 horas.

En el ejemplo siguiente, se instaló una pieza de maquinaria el 14/6/2016 a las 10:00 AM. Podría utilizar cualquiera de los cálculos siguientes para generar una fecha de inspección transcurrido un mes (30 días) de esta fecha de instalación. En el primer cálculo se utiliza un campo de fecha con el valor 14/6/2016 y un campo numérico con el valor 30, mientras que en el segundo se utiliza un literal de fecha y un literal de número.

<MyDateField> + <MyNumberField> = 7/14/2016 10:00 AM
DATE'6/14/2016' + 30 = 7/14/2016 10:00 AM

Calcular la diferencia entre dos fechas

Puede que desee calcular el tiempo transcurrido entre dos fechas. Por ejemplo, si tiene fechas de instalación para contadores eléctricos y también tiene fechas de inspección, puede calcular la diferencia entre las dos fechas para verificar que el tiempo transcurrido entre la instalación y la inspección queda dentro de unas directrices válidas. El resultado del cálculo es un campo numérico en lugar de un campo de fecha.

Ejemplo de Arcade

El siguiente ejemplo utiliza la función DateDiff para calcular la edad de una persona al hallar la diferencia entre la fecha actual (endDate) y la fecha de nacimiento de la persona (startDate):

var startDate = Date($feature.startDateField);
var endDate = Date($feature.endDateField);
var age = DateDiff(endDate, startDate, 'years');
return age;

Ejemplos de SQL

Se puede utilizar cualquier combinación de campos de fecha y literales de fecha para calcular el tiempo transcurrido entre dos fechas. En el primer cálculo de abajo se utiliza un campo de fecha, mientras que en el segundo se utiliza un literal de fecha. En el tercer y cuarto cálculo se utiliza un campo de fecha y un literal de fecha.

<DateField1> - <DateField2> = number of days in between
DATE'<SQL-supported Date Literal>' - DATE'< SQL-supported Date Literal>' = number of days in between
<DateField1> - DATE'<SQL-supported Date Literal>' = number of days in between
DATE'<SQL-supported Date Literal>' - <DateField2>  = number of days in between

El resultado es un campo numérico que se calcula restando un campo o literal de fecha de otro campo o literal de fecha. El número resultante (en días) puede ser un número entero y también puede incluir una fracción; por ejemplo, 1,5 representaría un día y medio o 36 horas.

En el ejemplo de la inspección de los contadores eléctricos mencionada antes, se puede utilizar cualquiera de los cálculos siguientes para calcular el tiempo transcurrido entre la fecha de instalación del 1/6/2015 y la fecha de inspección del 1/10/2015. En el primer cálculo se utilizan campos de fecha, en el segundo se utilizan literales de fecha y en el tercero y cuarto se utilizan tanto un campo de fecha como un literal de fecha.

<InspectionDateField> - <InstallationDateField> = 122 (days)
DATE'10/1/2015' - DATE'6/1/2015' = 122 (days)
<InspectionDateField> - DATE'6/1/2015' = 122 (days)
DATE'10/1/2015' - <InstallationDateField> = 122 (days)

Consideraciones al calcular valores de campo

  • Cuando se calculen valores para una capa en Map Viewer Classic y solo se tenga un filtro en la capa, solo se calcularán los valores de los registros que cumplan los criterios del filtro.
  • Al escribir expresiones SQL, Calcular campo solo funciona con nombres de campo, no con alias. La lista Campos muestra todos los nombres de los campos disponibles para los cálculos. Puede filtrar la lista por tipo de campo Cadena de caracteres, Numérico y Fecha.
    • Si pasa el ratón por encima del nombre del campo en la lista Campos, se muestran el alias y el tipo de campo.
    • Si hace clic en un nombre de campo en la lista Campos, el campo se agrega a la expresión.
  • No puede calcular valores de campo en copias de capas de entidades alojadas ni en capas de entidades alojadas que tengan capas de teselas relacionadas.
  • Los valores calculados no se propagan desde la capa de entidades alojada o la vista a las capas de escenas alojadas.
  • Los números de las expresiones SQL no admiten Formatos regionales. Por ejemplo, en los valores de tablas de atributos debe utilizar un separador de punto decimal en lugar del separador de coma cuando la configuración regional está definida en España.
  • No puede usar la función MOD numérica en campos dobles. Asigne el campo a un valor entero como se muestra en el ejemplo.
  • No es posible escribir expresiones de Arcade para capas de entidades alojadas con la sincronización habilitada o que están configuradas para rastrear a quienes crearon y actualizaron por última vez entidades.
  • No puede utilizar Arcade para calcular valores para los siguientes tipos de datos de campo en la página del elemento de la capa de entidades:
    • Entero grande
    • Solo fecha
    • Solo hora
    • Desfase de marca de tiempo

    Nota:

    Cuando cualquier capa en una capa de entidades alojada contiene estos tipos de datos, los cálculos de, Arcade se deshabilitan para toda la capa de entidades alojada, incluso aquellas subcapas que no contienen tipos de datos no compatibles.

Referencia de SQL estandarizado (SQL-92)

Al escribir una expresión SQL para calcular los valores de campo, utilice SQL estandarizado. Esta sección proporciona una lista de los operadores y funciones SQL que puede utilizar para cálculos SQL en ArcGIS Online.

Después de crear una expresión SQL, haga clic en el botón Calcular. Si hay algún error, aparece un mensaje de error en la parte inferior del cuadro de diálogo. Corrija la sintaxis de la expresión y vuelva a calcular.

Operadores

En el cuadro de diálogo Calcular campo, puede crear expresiones SQL sencillas con operadores como los de suma, resta, multiplicación y división. A continuación se muestran algunos ejemplos y sugerencias para utilizar estos operadores:

  • Para multiplicar todos los valores de un campo numérico denominado SAMPLE por 100,0, escriba SAMPLE * 100,0 como expresión.
  • Para ecuaciones más complejas, puede usar paréntesis para especificar el orden de los cálculos, por ejemplo, SAMPLE * (BASELINE - 40).
  • Los operadores de coincidencia no funcionan en los campos de cadena de caracteres. Deberá usar las funciones de cadena de caracteres que se describen en la sección Funciones de cadenas de caracteres.
  • Si va a calcular un campo de tipo doble para convertirlo en un campo de tipo entero, puede agregar la función CAST automáticamente a la expresión. Por ejemplo, si va a calcular un campo de tipo doble llamado POP para ponerlo en un campo de tipo entero llamado SAMPLE, la expresión tendrá el aspecto CAST(SAMPLE AS FLOAT). No quite la función CAST. Consulte Funciones numéricas a continuación para obtener información sobre la función CAST.
  • Utilice comillas simples para incluir un apóstrofo en la cadena. Por ejemplo, 'L''Hospitalet'. No utilice comillas dobles.

Funciones

Además de expresiones sencillas con operadores, también puede usar funciones para crear expresiones SQL. Las funciones funcionan con nombres de campos, literales y otras funciones. Por ejemplo, supongamos que necesita calcular un campo doble para que sea TOTALPOP dividido por POP18. Si una función tiene POP18 igual a cero, el cálculo dará como resultado un error de división por cero. Puede protegerse frente a esto con la función NULLIF que se describe a continuación. La expresión sería TOTALPOP / NULLIF(POP18, 0).

Las funciones admiten argumentos. En las tablas siguientes, cualquier argumento puede ser:

  • Un nombre de campo, siempre que el tipo del campo coincida con el tipo del argumento (cadena de caracteres, número o fecha).
  • Un literal, como 'Velero' (una cadena de caracteres entrecomillada con comillas simples), el número 5 o una fecha en formato MM/DD/AAAA hh:mm:ss o AAAA-MM-DD, o una hora en formato HH:MM:SS entrecomillada con comillas simples.
  • Una función que devuelva un valor del tipo adecuado (cadena de caracteres, número o fecha). Por ejemplo, FLOOR(POWER(SAMP_ERR, 0.5)) devuelve el entero más grande que es menor o igual que la raíz cuadrada de SAMP_ERR.

Con fines ilustrativos, los ejemplos de la columna de descripción de las tablas siguientes utilizan mayoritariamente argumentos literales. Puede sustituir un nombre de campo u otra función por estos argumentos.

Funciones de fecha

En los campos fecha se pueden realizar varios cálculos. Por ejemplo, puede agregar o restar tiempo de un campo de fecha o calcular la diferencia entre dos campos de fecha.

Antes de trabajar con campos de fecha, lea estas consideraciones importantes.

Puede utilizar cualquier combinación de campos de fecha y numéricos y literales para calcular los campos de fecha. Si utiliza literales de fecha, debe utilizar formatos de fecha compatibles con SQL.

Están disponibles las siguientes funciones de fecha:

FunciónDescripción

CURRENT_DATE()

Devuelve la fecha actual en hora UTC.

El valor que se muestre dependerá del cliente que esté utilizando. 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.

El valor que se muestre dependerá del cliente que esté utilizando. 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.

El valor que se muestre dependerá del cliente que esté utilizando. 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 valores posibles de <unit> cabe citar year, month, day, hour y minute.

Los siguientes ejemplos extraen diferentes unidades del valor fecha-hora 21/12/2016 15:11:

  • EXTRACT(MONTH FROM TIMESTAMP '2016-12-21 15:11:00'): devuelve 12.
  • EXTRACT(DAY FROM TIMESTAMP '2016-12-21 15:11:00'): devuelve 21.
  • EXTRACT(HOUR FROM TIMESTAMP '2016-12-21 15:11:00'): devuelve 15.

Funciones numéricas

FunciónDescripción

ABS(<number>)

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

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.

En el primer ejemplo, el número se convierte en un entero. Dado que los números enteros son números exactos, el resultado es 1424. En el segundo ejemplo, un entero se convierte en un flotante, lo que da como resultado un número con decimales, 1424,0

  • CAST(1424.49 AS INT)
  • CAST(1424 AS FLOAT

CEILING(<number>)

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

El siguiente ejemplo devuelve 13:

CEILING(12.93)

COS(<number>)

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

FLOOR(<number>)

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

El siguiente ejemplo devuelve 12:

FLOOR(12.93)

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. Una forma más rápida de hacerlo sería con 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>).

El siguiente ejemplo devuelve 32768:

POWER(8,5)

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 a la derecha del punto decimal. Si <length> es un número negativo, el valor de <number> especificado se redondea a la izquierda del punto decimal.

A continuación se exponen algunos 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.

En el primer ejemplo, los números a la derecha del decimal se truncan para incluir solo dos números, lo que da como resultado el valor 111,99. En el segundo ejemplo, los números a la izquierda del decimal se truncan, lo que da como resultado el valor 100,00.

  • TRUNCATE(111.996,2)
  • TRUNCATE(111.996,-2)

Funciones de cadena

FunciónDescripción

CAST(<string> AS DATE | TIME)

Convierte la cadena en una fecha u hora si el valor de la cadena está en un formato compatible.

Si la cadena tiene el formato "MM/DD/AAAA hh:mm:ss" o "AAAA-MM-DD", puede convertirla en una fecha. Si la cadena tiene el formato «HH:MM:SS», puede convertirla al tipo de datos solo hora (TIME).

Por ejemplo, la cadena siguiente puede convertirse en una fecha:

CAST('1988-05-30' AS DATE)

CHAR_LENGTH(<string>)

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

Por ejemplo, la siguiente sentencia devuelve 8:

CHAR_LENGTH('Redlands')

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.

El primer ejemplo concatena las letras A y B. El segundo ejemplo muestra una función CONCAT anidada para concatenar tres valores de cadena, A, : y B.

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

Los valores nulos se convierten en cadenas vacías.

CURRENT_USER

Cuando se incluye la función CURRENT_USER en una consulta, actúa de forma similar a una variable; el nombre de usuario del usuario que accede a la capa de entidades alojadas o a la vista de capa de entidades alojadas se identifica y se utiliza en la consulta.

Por ejemplo, si el usuario planner3 ha iniciado sesión en la organización para acceder a una vista de capa de elementos alojada que contiene la siguiente definición de consulta, únicamente se devolverán al usuario conectado las entidades cuyo campo staffmember contenga el valor planner3:

staffmember=current_user

En el siguiente ejemplo, se almacenan varios valores en el campo staffmember. La siguiente cláusula where encontrará el nombre de usuario actual en el valor de texto del campo staffmember incluso si hay varios nombres de usuario almacenados en el campo:

where=position(current_user in staffmember)>0

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.

En el primer ejemplo, el resultado es 5 porque la primera letra (b) de la subcadena (boat) es la quinta letra de la cadena (Sailboat). En el segundo ejemplo, el resultado es 0, porque la subcadena (motor) no está presente en la cadena.

  • POSITION('boat', 'Sailboat')
  • POSITION('motor', 'Sailboat')

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.

Vea los siguientes 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.

En el siguiente ejemplo, existe un espacio antes y después de la cadena, San Bernardino. La palabra clave BOTH se utiliza para recortar la cadena de espacio (indicada mediante dos comillas simples con un espacio entre ellas) del inicio y el final de la cadena de texto:

TRIM(BOTH ' ' FROM ' San Bernardino ')

De este modo se devuelve la cadena 'San Bernardino'.

UPPER(<string>)

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

En este ejemplo, todas las letras de la cadena Sailboat se convierten a mayúsculas, lo que da como resultado la cadena 'SAILBOAT':

UPPER('Sailboat')

LOWER(<string>)

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

En el siguiente ejemplo, se devuelve 'sailboat':

LOWER('Sailboat')