Referencia de SQL para las expresiones de consulta utilizadas en ArcGIS

El Lenguaje estructurado de consultas (SQL) es un lenguaje informático estándar que contiene un conjunto de sintaxis y expresiones definidas que se utilizan para acceder y administrar datos en bases de datos y en otras tecnologías de procesamiento de datos.

El Instituto Nacional Estadounidense de Estándares (ANSI) define un estándar para SQL. La mayoría de sistemas de administración de bases de datos relacionales (RDBMS) utilizan ese estándar y lo han ampliado, lo que hace que la sintaxis SQL sea ligeramente diferente entre sí en distintos RDBMS.

Las expresiones de consulta en ArcGIS se ajustan a las expresiones SQL estándar. La sintaxis SQL que utilice en una expresión varía según la fuente de datos. Cada fuente de datos tiene su propia variante de SQL, que se conoce como dialectos de SQL, como los siguientes:

  • Los datos basados en archivos, incluidas las geodatabases de archivos, los shapefiles, las vistas de tabla en memoria, los archivos de texto como .dbf, .csv y .txt, las tablas de .xlsx y los servicios de entidades que utilizan consultas estandarizadas, utilizan el dialecto de SQL de ArcGIS que admite un subconjunto de recursos de SQL.
  • Las geodatabases móviles, ST_Geometry SQLite, Open Geospatial Consortium (OGC) GeoPackage y Microsoft Excel usan el dialecto de SQL de SQLite.
  • Las bases de datos y las geodatabases corporativas utilizan la sintaxis SQL del RDBMS subyacente, por ejemplo, Oracle, Microsoft SQL Server, PostgreSQL, SAP HANA y IBM Db2, donde cada base de datos utiliza su propio dialecto de SQL ligeramente distinto.

Al utilizar cuadros de diálogo de ArcGIS para crear una expresión SQL, la opción autocompletar le ayuda a aplicar la sintaxis correcta para la fuente de datos que está consultando. A medida que escribe, aparece un mensaje que muestra los nombres de campo, los valores, las palabras clave y los operadores admitidos por su fuente de datos.

Sugerencia:

Revise lo siguiente para ayudar a determinar cuándo se utiliza la sintaxis SQL de ArcGIS o cuándo se utiliza la sintaxis SQL del RDBMS subyacente al crear una expresión SQL.

  • Si los datos de la expresión SQL proceden de una mezcla de ubicaciones de fuente de datos, ocurrirá lo siguiente:
    • Cuando las fuentes de datos proceden tanto de datos basados en archivos como de un RDBMS, se utilizará la sintaxis SQL de ArcGIS.
  • Si todos los datos de la expresión SQL proceden de la misma ubicación de la fuente de datos, ocurrirá lo siguiente:
    • Cuando la fuente de datos son datos basados en archivos, se utilizará la sintaxis SQL de ArcGIS.
    • Cuando la fuente de datos sea una base de datos o una geodatabase corporativa, ArcGIS pasará la expresión SQL al RDBMS para la resolución y deberá consultar la documentación de su sistema de administración de bases de datos para la sintaxis de expresión y los tipos de datos específicos compatibles.

En ArcGIS AllSource, el cuadro de diálogo de la expresión SQL se encuentra en las siguientes ubicaciones:

Sintaxis de expresión SQL

Una expresión SQL contiene una combinación de uno o más valores, operadores y funciones SQL que se pueden utilizar para consultar o seleccionar un subconjunto de entidades y registros de tablas en ArcGIS.

Todas las consultas SQL se expresan utilizando la palabra clave SELECT.

SELECT * FROM forma la primera parte de la expresión SQL y se le proporciona automáticamente en la mayoría de cuadros de diálogo de ArcGIS. Por ejemplo, cuando construye una consulta escribiendo sintaxis SQL, se utiliza una declaración SELECT para seleccionar campos de una capa o tabla y se le proporciona.

La siguiente parte de la expresión SQL que aparece después de SELECT * FROM <Layer_name> es la cláusula WHERE. La cláusula WHERE se utiliza para obtener registros que cumplen con criterios específicos y es la parte de la expresión que debe construir.

Sugerencia:

El asterisco (*) en una expresión SQL se utiliza para pedir todas las columnas.

A continuación, se muestra una forma básica de una cláusula WHERE de expresión SQL:

  • <Field_name> <Operator> <Value or String>

Sintaxis de expresión SQL básica

Por ejemplo, STATE_NAME = 'Florida'. Esta expresión contiene una sola cláusula y selecciona todas las entidades que contengan "Florida" en el campo STATE_NAME.

Para las expresiones compuestas, se utiliza la siguiente forma:

  • <Field_name> <Operator> <Value or String> <Connector> <Field_name> <Operator> <Value or String> ...

Sintaxis de expresión SQL compuesta

Por ejemplo, STATE_NAME = 'Florida' OR (STATE_NAME = 'South Carolina' AND POP2010 > 15000). Esta expresión compuesta se compone de varias cláusulas conectadas por un operador lógico, AND u OR, y selecciona todas las entidades que contengan Florida en el campo STATE_NAME y todas las entidades que contengan Carolina del Sur en el campo STATE_NAME y tengan un valor superior a 15.000 en el campo llamado POP2010.

Sugerencia:

Opcionalmente, los paréntesis () se pueden utilizar para definir el orden de las operaciones en las expresiones compuestas.

Debido a que está seleccionando columnas como un todo, no puede restringir la declaración SELECT para que devuelva solo algunas de las columnas de la tabla correspondiente porque la sintaxis SELECT * está codificada de forma rígida. Por esta razón, no se pueden utilizar palabras clave, tales como DISTINCT, ORDER BY y GROUP BY en una expresión SQL en ArcGIS, excepto cuando se utilizan subconsultas. Para obtener más información, consulte la sección Subconsultas que aparece a continuación.

En las secciones siguientes se describen los elementos de expresiones de consulta SQL comunes utilizadas en ArcGIS.

Consultas comunes: buscar cadenas de caracteres

Las cadenas de caracteres siempre deben entrecomillarse en las consultas, por ejemplo:

STATE_NAME = 'California'

En las expresiones, las cadenas de caracteres distinguen entre mayúsculas y minúsculas, a menos que se ejecuten en geodatabases en Microsoft SQL Server. Si desea realizar una búsqueda que no distinga entre mayúsculas y minúsculas en otras fuentes de datos, puede utilizar una función SQL para convertir todos los valores al mismo tipo de letra. En las fuentes de datos basadas en archivos, como las geodatabases de archivos o los shapefiles, puede usar la función UPPER o LOWER para definir la combinación de mayúsculas y minúsculas de una selección. Por ejemplo, la siguiente expresión selecciona el estado cuyo nombre esté almacenado como 'Rhode Island' o como 'RHODE ISLAND':

UPPER(STATE_NAME) = 'RHODE ISLAND'

Utilice el operador LIKE (en lugar del operador =) para crear una búsqueda de cadena de caracteres parcial. Por ejemplo, esta expresión selecciona Mississippi y Missouri entre los nombres de estados de EE. UU.:

STATE_NAME LIKE 'Miss%'

Utilice el operador IN para especificar varios valores. Por ejemplo, seleccione todos los valores en California, Nueva York y Colorado.

STATE_NAME IN ('California', 'New York', 'Colorado')

Si la cadena de caracteres contiene una comilla simple, primero tiene que usar otra comilla simple como carácter de escape, por ejemplo:

NAME = 'Alfie''s Trough'
OWNER_NAME IN ('Joseph D''Souza', 'Katherine Smith', 'Tim O''Brien')

El símbolo de porcentaje (%) significa que se acepta cualquier elemento en su lugar: un carácter, cien caracteres o ningún carácter. Alternativamente, para buscar con un comodín que represente un carácter, utilice un guión bajo (_). Por ejemplo, esta expresión encuentra Catherine Smith y Katherine Smith:

OWNER_NAME LIKE '_atherine Smith'

Puede utilizar los operadores mayor que (>), menor que (<), mayor o igual que (>=), menor o igual que (<=), distinto de (<>) y BETWEEN para seleccionar los valores de cadenas de caracteres según su orden. Por ejemplo, esta expresión selecciona todas las ciudades en una cobertura con nombres que comienzan por las letras de M a Z:

CITY_NAME >= 'M'

Las funciones de cadena de caracteres se pueden utilizar para dar formato a las cadenas de caracteres. Por ejemplo, la función LEFT devuelve cierta cantidad de caracteres desde la izquierda de la cadena de caracteres. En este ejemplo, la consulta devuelve todos los estados que empiezan por la letra A:

LEFT(STATE_NAME,1) = 'A'

Consulte la documentación del RDBMS para obtener una lista de las funciones compatibles.

Expresiones comunes: buscar valores NULL

Puede utilizar la palabra clave NULL para seleccionar las entidades y los registros que tienen valores nulos para el campo que se especificó. La palabra clave NULL siempre está precedida por IS o IS NOT. Por ejemplo, si desea encontrar las ciudades para las que no se ha introducido la población de 1996, puede utilizar lo siguiente:

POPULATION IS NULL

Alternativamente, para encontrar las ciudades para las que se ha introducido la población de 1996, puede utilizar lo siguiente:

POPULATION96 IS NOT NULL

Si se selecciona un campo de geometría, solo se pueden buscar palabras clave NULL y NOT NULL.

Expresiones comunes: buscar números

El punto decimal (.) se utiliza siempre como delimitador decimal, independientemente de la configuración local o regional. La coma no se puede usar como delimitador decimal o de miles en una expresión.

Puede consultar números con los operadores igual (=), no igual (<>), mayor que (>), menor que (<), mayor o igual que (>=), menor o igual que (<=) y BETWEEN. Por ejemplo:

POPULATION >= 5000

Se pueden utilizar las funciones numéricas para dar formato a los números. Por ejemplo, la función ROUND redondeará un número a una cantidad de decimales determinada en una geodatabase de archivos:

ROUND(SQKM,0) = 500

Consulte la documentación de su RDBMS para ver una lista de las funciones numéricas admitidas.

Fechas y hora

Reglas generales y expresiones comunes

Las fuentes de datos de geodatabase almacenan fechas en campos de fecha y hora. Sin embargo, los shapefiles no. Por lo tanto, la mayor parte de la sintaxis de consultas detallada a continuación contiene una referencia a la hora. En algunos casos, la parte de la consulta sobre la hora se puede omitir de manera segura si se sabe que el campo contiene solo fechas; en otros casos, debe introducirse o la consulta devolverá un error de sintaxis.

La búsqueda en campos de fecha exige especial cuidado con el tipo de campo de fecha y hora y la sintaxis necesaria para el origen de datos. Si crea una consulta de fecha en el modo Cláusula del Generador de consultas, se generará automáticamente la sintaxis correcta. El siguiente ejemplo muestra una consulta que devolverá todos los registros correspondientes o posteriores al 1 de enero de 2011 para un campo de fecha y hora de una fuente de datos de geodatabase de archivos:

INCIDENT_DATE >= timestamp '2011-01-01 00:00:00'

Nota:

En ArcGIS AllSource no puede insertar ni ver un valor de fecha anterior a 100 CE. Si utiliza un tipo de fecha que almacena la hora, una hora de 00:00:00 equivale a las 12 a.m. (medianoche).

Cuando se almacena una hora que no es nula con las fechas (por ejemplo, 12 de enero de 1999, 04:00:00), consultar solo la fecha no devolverá el registro. Cuando pasa solo una fecha a un campo de fecha y hora, esto completa la hora con ceros y recupera solo los registros en los que la hora es 12:00:00 a.m.

La tabla de atributos muestra la fecha y la hora en un formato amigable, según su configuración regional, en lugar del formato de la base de datos subyacente. Esto puede tener algunas desventajas:

  • La cadena de caracteres que se muestra en la consulta SQL puede parecerse solo un poco al valor mostrado en la tabla, especialmente cuando está involucrada la hora. Por ejemplo, una hora introducida como 00:00:15 se muestra como 12:00:15 a.m. en la tabla de atributos, con la configuración regional de Estados Unidos, y la sintaxis de consulta comparable es Datefield = '1899-12-30 00:00:15'.
  • La tabla de atributos no sabe cuál es la fuente de datos subyacente hasta que se guardan las modificaciones. Primero intentará dar formato al valor introducido para que coincida con su propio formato; después, al guardar las modificaciones, intentará afinar el valor resultante para que se ajuste a la base de datos. Por este motivo, puede introducir una hora en un shapefile, pero comprobará que es descartado cuando guarda los cambios. El campo tendrá entonces un valor '1899-12-30' que se mostrará como 12:00:00 a.m. o algo equivalente dependiendo de la configuración regional.

Sintaxis de fecha y hora para geodatabases

A continuación encontrará algunos ejemplos de sintaxis de SQL de fecha y hora compatibles con geodatabases de archivos, geodatabases móviles y fechas en un shapefile. Algunas geodatabases corporativas y fuentes de datos RDBMS también son compatibles con la sintaxis de SQL de fecha y hora, aunque estas fuentes de datos pueden requerir una sintaxis de SQL ligeramente diferente.

Consulte la documentación de su sistema de administración de bases de datos para la sintaxis de expresión de SQL y los tipos de datos específicos compatibles.

Nota:
  • Oracle no admite campos de solo fecha (esriFieldTypeDateOnly) ni de solo hora (esriFieldTypeTimeOnly).
  • PostgreSQL no admite el campo de marca de hora con desfase (esriFieldTypeTimestampOffset).

Geodatabases de archivos

Los campos de solo fecha y solo hora de las geodatabases de archivos están precedidos por la palabra date o time, respectivamente. Los campos de fecha y hora van precedidos de timestamp.

Datefield = timestamp 'yyyy-mm-dd'

Las geodatabases de archivos admiten el uso de una hora en el campo de fecha, por lo que puede agregarse lo siguiente a la expresión:

Datefield = timestamp 'yyyy-mm-dd hh:mm:ss'

Para los campos de solo fecha, solo hora o marca de hora con desfases, use los siguientes formatos:

//DateOnlyField = time 'yyyy-mm-dd'
DateOnlyField = time '2003-01-08'

//TimeOnlyField = date 'HH24:mm:ss'
TimeOnlyField = date '14:35:00'

//TimestampOffsetField = timestamp 'yyyy-mm-dd HH24:mm:ss -TZH:TZM' 
TimestampOffsetField = timestamp '2003-01-08 14:35:00 -08:00'

Geodatabases móviles

Ciertos tipos de campos de fecha van precedidos de la palabra JULIANDAY. Otros no están formateados sintácticamente con una función.

Datefield = JULIANDAY('yyyy-mm-dd')

Las geodatabases móviles admiten el uso de la hora en los campos de fecha, por lo que puede agregarse lo siguiente a la expresión:

Datefield = JULIANDAY('yyyy-mm-dd HH24:mm:ss')

//TimestampOffsetField = 'yyyy-mm-dd HH24:mm:ss -TZH:TZM'
TimestampOffsetField = '2003-01-08 14:35:00 -08:00'

//DateOnlyField = JULIANDAY('yyyy-mm-dd')
DateOnlyField = JULIANDAY('2003-01-08')

//TimeOnlyField = 'HH24:mm:ss'
TimeOnlyField = '14:35:00'

Shapefiles, coberturas y otras fuentes de datos basadas en archivos

Datefield = date 'yyyy-mm-dd'

Los shapefiles y las coberturas no admiten el uso de la hora en un campo de fecha.

Limitaciones conocidas

Consultar una fecha en la parte izquierda (primera tabla) de una unión solo funciona con las fuentes de datos basadas en archivos, como las geodatabases de archivos, los shapefiles y las tablas DBF. Sin embargo, existe una alternativa para trabajar con datos que no están basados en archivos, como datos de geodatabases corporativas, tal y como se describe a continuación.

Consultar una fecha en la parte izquierda de una unión se realizará correctamente si se utiliza la versión limitada de SQL desarrollada para fuentes de datos basadas en archivos. Si no utiliza esa fuente de datos, puede forzar la expresión para que utilice este formato. Esto se puede lograr asegurándose de que la expresión de consulta incluya campos de más de una tabla de unión. Por ejemplo, si una clase de entidad y una tabla (FC1 y Table1) se unen y ambas proceden de una geodatabase corporativa, las siguientes expresiones fallarán o no devolverán ningún dato:

FC1.date = date #01/12/2001#
FC1.date = date '01/12/2001'

Para realizar una consulta satisfactoriamente, puede crearla de la siguiente manera:

FC1.date = date '01/12/2001' and Table1.OBJECTID > 0

Se utilizará la versión SQL limitada porque la consulta involucra campos de ambas tablas. En esta expresión, Table1.OBJECTID es siempre > 0 para los registros que coincidían durante la creación de la unión, por lo que esta expresión es verdadera para todas las filas que contienen coincidencias de unión.

Para asegurarse de que se seleccionan todos los registros con FC1.date = date "01/12/2001", utilice la siguiente consulta:

FC1.date = date '01/12/2001' and (Table1.OBJECTID IS NOT NULL OR Table1.OBJECTID IS NULL)

Esta consulta seleccionará todos los registros con FC1.date = date "01/12/2001", independientemente de si hubo una unión coincidente para cada registro en particular.

Combinar expresiones

Se pueden generar expresiones compuestas combinando las expresiones con los operadores AND y OR. Por ejemplo, la siguiente expresión selecciona todas las viviendas que tengan más de 1.500 pies cuadrados y un garaje para tres o más vehículos:

AREA > 1500 AND GARAGE > 3

Cuando se utiliza el operador OR, al menos una de las dos partes de la expresión separada por el operador OR debe ser verdadera para que se seleccione el registro. Por ejemplo:

RAINFALL < 20 OR SLOPE > 35

Utilice el operador NOT al comienzo de una expresión para buscar entidades o registros que no coincidan con la expresión especificada. Por ejemplo:

NOT STATE_NAME = 'Colorado'

Las expresiones con NOT se pueden combinar con los operadores AND y OR. Por ejemplo, esta expresión selecciona todos los estados de Nueva Inglaterra salvo Maine:

SUB_REGION = 'New England' AND NOT STATE_NAME = 'Maine'

Cálculos

Los cálculos se pueden incluir en las expresiones por medio de los operadores aritméticos +, -, * y /. Los cálculos se pueden realizar entre campos y números. Por ejemplo:

AREA >= PERIMETER * 100

Los cálculos también se pueden realizar entre campos. Por ejemplo, para buscar los países con una densidad de población menor o igual que 25 personas por milla cuadrada, puede utilizar esta expresión:

POP1990 / AREA <= 25

Jerarquía del operador

Las expresiones se evalúan de acuerdo con las reglas estándar de jerarquía del operador. Por ejemplo, la parte de una expresión entre paréntesis se evalúa antes que la parte que no está entre paréntesis.

HOUSEHOLDS > MALES * (POP90_SQMI + AREA)

Al editar una expresión SQL, puede agregar paréntesis en modo de edición de SQL. Para ello, escríbalos o use los comandos Agrupar y Desagrupar del modo cláusula con el fin de agregarlos o eliminarlos.

Subconsultas

Una subconsulta es una consulta anidada en otra consulta y solo es compatible con fuentes de datos de geodatabase. Se puede usar para aplicar funciones predicado o agregar o para comparar datos con los valores almacenados en otra tabla. Esto se puede hacer con la palabra clave IN o ANY. Por ejemplo, esta consulta selecciona solo los países que tampoco se enumeran en la tabla indep_countries:

COUNTRY_NAME NOT IN (SELECT COUNTRY_NAME FROM indep_countries)

Nota:

Los shapefiles y otras fuentes de datos basadas en archivos que no sean de tipo geodatabase no admiten subconsultas. Las subconsultas que se realizan en tablas y clases de entidad corporativas versionadas no devolverán entidades almacenadas en las tablas delta. Las geodatabases de archivos proporcionan la compatibilidad limitada con la subconsultas que se explica en esta sección, mientras que las geodatabases corporativas proporcionan compatibilidad total. Para obtener más información sobre el conjunto completo de funciones de subconsultas de las geodatabases corporativas, consulte la documentación de RDBMS.

Esta consulta devuelve las entidades con un GDP2006 mayor que el GDP2005 de cualquiera de las entidades contenidas en los países:

GDP2006 > (SELECT MAX(GDP2005) FROM countries)

La compatibilidad de las subconsultas en geodatabases de archivos se limita a lo siguiente:

  • Subconsultas escalares con operadores de comparación. Una subconsulta escalar devuelve un solo valor, por ejemplo:
    GDP2006 > (SELECT MAX(GDP2005) FROM countries)
    Para las geodatabases de archivos, las funciones establecidas AVG, COUNT, MIN, MAX, y SUM solo pueden utilizarse con subconsultas escalares.
  • Predicado EXISTS, por ejemplo:
    EXISTS (SELECT * FROM indep_countries WHERE COUNTRY_NAME = 'Mexico')

Operadores

A continuación se muestra la lista completa de operadores de consulta admitidos por las geodatabases de archivos, los shapefiles, las coberturas y otras fuentes de datos basadas en archivos. También son compatibles con las geodatabases corporativas, aunque estos orígenes de datos pueden requerir una sintaxis diferente. Además de los siguientes operadores, las geodatabases corporativas admiten otras funciones. Consulte la documentación RDBMS para obtener más detalles.

Operadores aritméticos

Se utiliza un operador aritmético para sumar, restar, multiplicar y dividir valores numéricos.

OperadorDescripción

*

Operador aritmético para la multiplicación

/

Operador aritmético para la división

+

Operador aritmético para la suma

-

Operador aritmético para la resta

Operadores aritméticos

Operadores de comparación

Se utilizan operadores de comparación para comparar una expresión con otra.

OperadorDescripción

<

Menor que. Se puede usar con cadenas (la comparación está basada en un orden alfabético), números y fechas.

<=

Menor o igual que. Se puede usar con cadenas (la comparación está basada en un orden alfabético), números y fechas.

<>

No igual que. Se puede usar con cadenas (la comparación está basada en un orden alfabético), números y fechas.

>

Mayor que. Se puede usar con cadenas (la comparación está basada en un orden alfabético), números y fechas.

>=

Mayor o igual que. Se puede usar con cadenas (la comparación está basada en un orden alfabético), números y fechas.

IS [NOT] NULL

Selecciona un registro si tiene un valor nulo para el campo especificado. Cuando NULL está precedido por NOT, selecciona un registro si tiene algún valor para el campo especificado.

Operadores de comparación

Operadores lógicos

Al igual que los operadores de comparación, los operadores lógicos prueban la veracidad de la declaración y devuelven valores que son verdaderos para la declaración dada.

OperadorDescripción

AND

Combina dos condiciones y selecciona un registro si las dos condiciones son verdaderas. Por ejemplo, la siguiente expresión selecciona cualquier casa con más de 1.500 metros cuadrados y un garaje para más de dos autos:

AREA > 1500 AND GARAGE > 2

[NOT] BETWEEN x AND y

Selecciona un registro si tiene un valor mayor o igual que x y menor o igual que y. Cuando está precedido por NOT, selecciona un registro si tiene algún valor fuera del rango especificado. Por ejemplo, esta expresión selecciona todos los registros con un valor mayor o igual que 1 y menor o igual que 10:

OBJECTID BETWEEN 1 AND 10

Este es el equivalente de la siguiente expresión:

OBJECTID >= 1 AND OBJECTID <= 10

Sin embargo, la expresión con BETWEEN le brindará un mejor rendimiento si está consultando un campo indexado.

[NOT] EXISTS

Devuelve TRUE si la subconsulta devuelve al menos un registro; de lo contrario, devuelve FALSE. Por ejemplo, esta expresión devuelve TRUE si el campo OBJECTID contiene un valor de 50:

EXISTS (SELECT * FROM parcels WHERE OBJECTID = 50)

El operador EXISTS se admite solo en geodatabases corporativas y de archivos.

[NOT] IN

Selecciona un registro si tiene una de varias cadenas o valores en un campo. Cuando está precedido por NOT, selecciona un registro si no tiene una de varias cadenas o valores en un campo. Por ejemplo, esta expresión busca cuatro nombres de estados:

STATE_NAME IN ('Alabama', 'Alaska', 'California', 'Florida')

x [NOT] LIKE y [ESCAPE 'carácter de escape']

Utilice el operador LIKE (en lugar del operador =) con comodines para crear una búsqueda de cadena de caracteres parcial. El símbolo de porcentaje (%) significa que se acepta cualquier elemento en su lugar: un carácter, cien caracteres o ningún carácter. Alternativamente, para buscar con un comodín que represente un carácter, utilice un guión bajo (_). Si necesita acceder a datos que no son de caracteres, utilice la función CAST. Por ejemplo, esta consulta devuelve números que empiezan con 8 del campo entero SCORE_INT:

CAST (SCORE_INT AS VARCHAR(10)) LIKE '8%'

Para incluir el símbolo de porcentaje o el guion bajo en la cadena de búsqueda, utilice la palabra clave ESCAPE para designar otro carácter en lugar del carácter escape, que a su vez indica que inmediatamente sigue un guion bajo o un signo de porcentaje real. Por ejemplo, esta expresión devuelve cualquier cadena que contenga 10%, como 10% DISCOUNT o A10%.

AMOUNT LIKE '%10$%%' ESCAPE '$'

NOT

Selecciona un registro si no coincide con la expresión. Por ejemplo, la siguiente expresión selecciona todos los estados excepto California:

NOT STATE_NAME = 'California'

OR

Combina dos condiciones y selecciona un registro si al menos una condición es verdadera. Por ejemplo, la siguiente expresión selecciona cualquier casa con más de 1.500 metros cuadrados o un garaje para más de dos autos:

AREA > 1500 OR GARAGE > 2

Operadores lógicos

operadores de cadena de caracteres

OperadorDescripción

||

Devuelve una cadena de caracteres que es el resultado de concatenar dos o más expresiones de cadena de caracteres.

FIRST_NAME || MIDDLE_NAME || LAST_NAME

Funciones

A continuación se muestra la lista completa de funciones admitidas por las geodatabases de archivos, los shapefiles, las coberturas y otras fuentes de datos basadas en archivos. Las geodatabases corporativas también admiten funciones, aunque estos orígenes de datos pueden requerir una sintaxis o un nombre de función diferente. Además de las siguientes funciones, las geodatabases corporativas admiten otras prestaciones. Consulte la documentación RDBMS para obtener más detalles.

Funciones de fecha

Todas las funciones de fecha devuelven un valor de fecha.

Geodatabases de archivos

FunciónDescripción

CURRENT_DATE

Devuelve la fecha actual.

EXTRACT(extract_field FROM extract_source)

Devuelve la parte extract_field de la extract_source. El argumento extract_source es una expresión de fecha y hora (DATE, DateOnly, TimeOnly, TimestampOffset). El argumento extract_field puede ser una de las palabras clave siguientes: YEAR, MONTH, DAY, HOUR, MINUTE o SECOND, MILLISECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE.

CURRENT TIME

Devuelve la hora actual.

Funciones de fecha de geodatabases de archivos

Ejemplos de uso de EXTRACT para Geodatabase de archivos:

  • EXTRACT(YEAR from DateOnly) > 1951
  • EXTRACT(YEAR from DateTimestamp) > 1981
  • EXTRACT(YEAR from TimestampOffset) > 1981
  • EXTRACT(TIMEZONE_HOUR from timeStampOffset) > 3
  • EXTRACT(TIMEZONE_MINUTE from timeStampOffset) = 30

Geodatabases móviles

FunciónDescripción

CURRENT_DATE

Devuelve la fecha actual.

EXTRACT(extract_field, extract_source)

Devuelve la parte extract_field de la extract_source. El argumento extract_source es una expresión de fecha y hora (DATE, DateOnly, TimeOnly, TimestampOffset). El argumento extract_field puede ser una de las palabras clave siguientes: YEAR, MONTH, DAY, HOUR, MINUTE o SECOND, MILLISECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE.

CURRENT TIME

Devuelve la hora actual.

Funciones de fecha de geodatabases móviles

Ejemplos de uso de EXTRACT para Geodatabase móvil:

  • EXTRACT('YEAR', DateOnly) > 1951
  • EXTRACT('YEAR', DateTimestamp) > 1981
  • EXTRACT('YEAR', TimestampOffset) > 1981
  • EXTRACT('TIMEZONE_HOUR', timeStampOffset) > 3
  • EXTRACT('TIMEZONE_MINUTE', timeStampOffset) = 30

Más información sobre los tipos de datos de los campos Fecha y Hora

Funciones de cadena

Los argumentos expresados como string_exp pueden ser el nombre de una columna, una cadena de caracteres literal o el resultado de otra función escalar, donde el tipo de datos subyacente se puede representar como un tipo de carácter.

Los argumentos expresados como character_exp son cadenas de caracteres de longitud variable.

Los argumentos expresados como start o length pueden ser literales numéricos o el resultado de otra función escalar, donde el tipo de datos subyacentes se puede representar como un tipo numérico.

Estas funciones de cadena de caracteres están basadas en 1; es decir, el primer carácter de la cadena de caracteres es el número 1.

FunciónDescripción

CHAR_LENGTH(string_exp)

Devuelve la longitud en caracteres de la expresión de cadena.

LOWER(string_exp)

Devuelve una cadena de caracteres equivalente a string_exp, con todos los caracteres en mayúsculas convertidos en minúsculas.

POSITION(character_exp IN character_exp)

Devuelve la posición de la primera expresión de carácter en la segunda expresión de carácter. El resultado es un número exacto con una precisión definida por implementación y una escala de cero.

SUBSTRING(string_exp FROM start FOR length)

Devuelve una cadena de caracteres derivada de string_exp, que comienza en la posición de carácter especificada por start y tiene length caracteres.

TRIM(BOTH | LEADING | TRAILING trim_character FROM string_exp)

Devuelve string_exp con trim_character quitado del extremo inicial, del extremo final o de ambos extremos de la cadena.

UPPER(string_exp)

Devuelve una cadena de caracteres equivalente a string_exp, con todos los caracteres en minúsculas convertidos en mayúsculas.

Funciones de cadena

Funciones numéricas

Todas las funciones numéricas devuelven un valor numérico.

Los argumentos expresados como numeric_exp, float_exp o integer_exp pueden ser el nombre de una columna, el resultado de otra función escalar o un literal numérico, donde los tipos de datos subyacentes pueden representarse como un tipo numérico.

FunciónDescripción

ABS(numeric_exp)

Devuelve el valor absoluto de numeric_exp.

ACOS(float_exp)

Devuelve el arcocoseno de float_exp como un ángulo expresado en radianes.

ASIN(float_exp)

Devuelve el arcoseno de float_exp como un ángulo expresado en radianes.

ATAN(float_exp)

Devuelve el arcotangente de float_exp como un ángulo expresado en radianes.

CEILING(numeric_exp)

Devuelve el entero más pequeño mayor o igual que numeric_exp.

COS(float_exp)

Devuelve el coseno de float_exp, donde float_exp es un ángulo expresado en radianes.

FLOOR(numeric_exp)

Devuelve el entero más grande menor o igual que numeric_exp.

LOG(float_exp)

Devuelve el logaritmo natural de float_exp.

LOG10(float_exp)

Devuelve el logaritmo de base 10 de float_exp.

MOD(integer_exp1, integer_exp2)

Devuelve el resto de integer_exp1 dividido entre integer_exp2.

POWER(numeric_exp, integer_exp)

Devuelve el valor de numeric_exp a la potencia de integer_exp.

ROUND(numeric_exp, integer_exp)

Devuelve numeric_exp redondeado a integer_exp lugares a la derecha del punto decimal. Si integer_exp es negativo, numeric_exp se redondea a |integer_exp| lugares a la izquierda del punto decimal.

SIGN(numeric_exp)

Devuelve un indicador del signo de numeric_exp. Si numeric_exp es menor que cero, se devuelve -1. Si numeric_exp es igual a cero, se devuelve 0. Si numeric_exp es mayor que cero, se devuelve 1.

SIN(float_exp)

Devuelve el seno de float_exp, donde float_exp es un ángulo expresado en radianes.

TAN(float_exp)

Devuelve la tangente de float_exp, donde float_exp es un ángulo expresado en radianes.

TRUNCATE(numeric_exp, integer_exp)

Devuelve numeric_exp truncado a integer_exp lugares a la derecha del punto decimal. Si integer_exp es negativo, numeric_exp se trunca a |integer_exp| lugares a la izquierda del punto decimal.

Funciones numéricas

Función CAST

La función CAST() convierte un valor o una expresión de un tipo de datos a otro tipo de datos especificado. La sintaxis es la siguiente:

CAST (expression AS data_type(length))

  • Donde expression es un parámetro requerido y puede ser un valor literal o una expresión válida de cualquier tipo (por ejemplo, nombre de columna, variable) que se convertirá.
  • Donde data_type es un parámetro requerido y la palabra clave utilizada es el tipo de datos resultante al que se convertirá la expresión. Consulte la tabla siguiente para obtener una lista de las palabras clave a utilizar para los tipos de datos válidos.
  • Donde length es un parámetro opcional y especifica la longitud del tipo de datos resultante.

Por ejemplo, en algunos casos, una operación de cadena de caracteres podría ser necesaria, pero si los datos están almacenados en un campo de tipo numérico, la consulta no funcionaría. Sin embargo, mediante la función CAST(), puede convertir el campo numérico en una cadena de caracteres para una operación SQL. Este código proyecta el campo numérico SQLNUM como un campo de texto, que después se puede utilizar en una operación de texto.

CAST(SQLNUM AS CHARACTER(12))

La siguiente tabla contiene las palabras clave que se deben usar para las conversiones de tipos de datos y se pueden especificar en mayúsculas o minúsculas.

Tipo de datosPalabra clave

Entero largo

  • INTEGER
  • INT

Entero corto

  • SMALLINT

Flotante (punto flotante de precisión única)

  • REAL
  • FLOAT [p] es 7 de forma predeterminada, que es equivalente a REAL. p > 7 es equivalente a DOUBLE PRECISION

Doble (punto flotante de precisión doble)

  • DOUBLE PRECISION
  • NUMERIC (p[,s])
  • DECIMAL (p[,s])

Cadena de caracteres

  • CHAR(n)
  • VARCHAR(n)
  • CHARACTER(n)

Fecha y hora

  • DATE
  • TIEMPO
  • TIMESTAMP

Nota:

  • p: precisión
  • s: escala
  • n: define la longitud de la cadena en caracteres
  • ( ): parámetro requerido
  • [ ]: parámetro opcional

Conversiones de tipos de datos compatibles al utilizar la función CAST

Ejemplos de la función CAST

  • Ejemplo 1:

    CAST(AREA AS INTEGER)

    Al convertir AREA, que es un tipo de datos flotante, a INTEGER, devuelve un entero y trunca cualquier valor resultante después del decimal.

  • Ejemplo 2:

    CAST(Rent AS FLOAT) + Utilities > 2000.45

    Convertir Rent, que es un tipo de datos CHARACTER, a un tipo de datos FLOAT y donde Utilities también es un tipo de datos FLOAT.

EsriCast

Los operadores de SQLite CAST trabajan con tipos de datos nativos; sin embargo, con la versión de los nuevos tipos de campo, así como con otros tipos de datos adicionales no nativos, deberá ajustar los operadores para que SQLite se ejecute correctamente. EsriCast se desarrolló para que los operadores de SQLite necesarios en las geodatabases móviles pudiesen acceder y comprender los variados tipos de datos con los que ArcGIS AllSource puede trabajar.

Ejemplo de sintaxis: EsriCast(expression, source_data_type, target_data_type)

Palabras clave de los datos de EsriCast

Tipo de datosPalabra clave de EsriCast

Corto

Int16

Largo

Int32

Entero grande

Int64

Flotante

Float32

Doble

Float64

Solo fecha

DateOnly

Solo hora

TimeOnly

Desfase de fecha y hora

Marca de hora

Fecha y hora

Fecha

Texto

Texto

Ejemplos de conversión de datos de EsriCast

Tipo de datos a tipo de datosSintaxis de EsriCast

De corto a largo

EsriCast(FC_Short_Data,'int16','int32')

De entero grande a corto

EsriCast(FC_BigInteger_Data, 'int64', 'int16')

De flotante a doble

EsriCast(FC_Float_Data, 'float32', 'float64')

Fecha y hora a solo fecha

EsriCast(FC_DateTime_Data, 'date', 'dateonly')

Solo fecha a desfase de marca de tiempo

EsriCast(FC_TimeOnly_Data, 'timeonly', 'timestamp')

De texto a corto

EsriCast(FC_Text_Data, 'text', 'int16')