La geodatabase de archivos permite mejorar la presentación de informes y análisis mediante el uso de expresiones y alias por medio de subcampos (lista de campos) en QueryDef. Además ORDER BY y GROUP BY son compatibles con PostFixClause. En apoyo de GROUP BY, las expresiones incluyen funciones de agregación como MIN, MAX y SUM.
La siguiente es una lista de las funciones que se pueden utilizar con geodatabases de archivos y ejemplos.
ALIAS
Da a una columna otro nombre para proporcionar más comprensión de salida.
SQL
SELECT NAME, POP1997 - POP1990 as PopChange
FROM counties ORDER BY NAME
ArcObjects
pQueryDef.SubFields = "NAME, POP1997 - POP1990 as PopChange"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY NAME"
CASE
Evalúa una lista de condiciones y devuelve una de varias expresiones de resultado.
SQL
SELECT name,salary,
CASE
WHEN salary <= 2000 THEN 'low'
WHEN salary > 2000 AND salary <= 3000 THEN 'average'
WHEN salary > 3000 THEN 'high'
END AS salary_level
FROM employees
ORDER BY salary ASC
ArcObjects
pQueryDef.SubFields = "name,salary,
CASE
WHEN salary <= 2000 THEN 'low'
WHEN salary > 2000 AND salary <= 3000 THEN 'average'
WHEN salary > 3000 THEN 'high'
END AS salary_level"
pQueryDef.Tables = " employees"
pQueryDef.PostfixClause = " ORDER BY salary ASC "
FUSIÓN
Devuelve el primer valor de campo no nulo entre sus argumentos.
SQL
SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
Contact_Phone
FROM Contact_Info
ArcObjects
queryDef.SubFields = "Name, COALESCE(Business_Phone, Cell_Phone,
Home_Phone) Contact_Phone"
queryDef.Tables = "Contact_Info"
Contact_Info:
Nombre | Business_Phone | Cell_Phone | Home_Phone |
Jeff | 531-2531 | 622-7813 | 565-9901 |
Laura | NULO | 772-5588 | 312-4088 |
Peter | NULO | NULO | 594-7477 |
Resultado:
Nombre | Contact_Phone |
Jeff | 531-2531 |
Laura | 772-5588 |
Peter | 594-7477 |
EXPRESIONES
SQL
SELECT SIN(sunangle)
FROM sightings
ArcObjects
queryDef.SubFields = "SIN(sunangle)"
queryDef.Tables = "sightings"
FUNCIONES DE CONJUNTO
Operador | Descripción |
AVG | Calcula el promedio de todos los valores en el grupo. Se ignoran los valores nulos. |
COUNT(*), COUNT(expresión) | COUNT(*) devuelve la cantidad de registros en una tabla. Se incluyen valores nulos. COUNT(expresión) devuelve el número de valores en la expresión especificada. Se ignoran los nulos. |
MÁX | Busca los valores máximos en el grupo. Se ignoran los valores nulos. |
MIN | Encuentra el valor mínimo en el grupo. Se ignoran los valores nulos. |
STDDEV, STDDEV_SAMP | Devuelve la muestra la desviación estándar de la expresión. |
STDDEV_POP | Devuelve la desviación de población estándar de la expresión. |
SUMA | Busca los valores en el grupo. Se ignoran los valores nulos. |
VAR, VAR_SAMP | Devuelve la varianza de muestra de la expresión. |
VAR_POP | Devuelve la varianza de población de la expresión. |
OPERARIOS ARITMÉTICOS
Se utiliza un operador aritmético para sumar, restar, multiplicar y dividir valores numéricos.
Operador | Descripció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 |
FUNCIONES
A continuación se muestra la lista completa de funciones admitidas por las geodatabases de archivos.
Funciones de fecha
Función | Descripción |
CURRENT_DATE | Devuelve la fecha actual. |
EXTRACTO (extract_field DESDE extract_source) | Devuelve la porción extract_field deextract_source. El argumento extract_source es una expresión de fecha y hora. El argumento extract_field puede ser una de las siguientes palabras clave: YEAR, MONTH, DAY, HOUR, MINUTE o SECOND. |
CURRENT TIME | Devuelve la hora actual. |
CURRENT_TIMESTAMP | Devuelve la fecha y hora actual. |
Funciones de cadena de caracteres
Los argumentos denotados 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 subyacentes se pueda representar como un tipo de carácter.
Los argumentos denotados como character_exp son cadenas de caracteres de longitud variable.
Los argumentos denotados como start o length pueden ser literal-numérico o el resultado de otra función escalar, donde el tipo de datos subyacentes se pueda representar como un tipo numérico.
Estas funciones de cadena están basadas en 1; es decir, el primer carácter de la cadena es el número 1.
Función | Descripción |
CHAR_LENGTH(string_exp) | Devuelve la longitud en caracteres de la expresión de cadena. |
CONCAT(string_exp1, string_exp2) | Devuelve una cadena de caracteres que es el resultado de la concatenación de string_exp2 con string_exp1. |
LOWER(string_exp) | Devuelve una cadena de caracteres equivalente a la de 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. |
SUBCADENA DE CARACTERES (string_exp DESDE inicio PARA longitud) | Devuelve una cadena de caracteres derivada de string_exp, que comienza en la posición de carácter especificada por los caracteres start para length. |
TRIM(BOTH | LEADING | TRAILINGtrim_characterFROM 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 equivalente a la de string_exp, con todos los caracteres en minúsculas convertidos en mayúsculas. |
Funciones numéricas
Todas las funciones numéricas devuelven un valor numérico.
Los argumentos denotados 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ón | Descripció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 arco tangente 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 restante de integer_exp1 dividido por 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. |
AGRUPAR POR
Se utiliza para capturar datos en varios registros y agrupar los resultados por una o más columnas
SQL
SELECT STATE_NAME, SUM(POP1990) as TotalPopulation
FROM counties
GROUP BY STATE_NAME ORDER BY STATE_NAME
ArcObjects
pQueryDef.SubFields = "STATE_NAME, SUM(POP1990) as
TotalPopulation"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "GROUP BY STATE_NAME ORDER BY
STATE_NAME"
TENER
Una cláusula where sobre GROUP BY.
SQL
SELECT department, MAX(salary) as Highest_salary
FROM employees
GROUP BY department HAVING MAX(salary) < 50000
ArcObjects
queryDef.SubFields = "department, MAX(salary) as Highest_salary"
queryDef.Tables = "employees"
pQueryDef.PostfixClause = "GROUP BY department HAVING MAX(salary)
< 50000"
UNIONES
Combina los registros de dos o más tablas.
Unión de cruce
SQL
SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
FROM Table1 CROSS JOIN Table2
ArcObjects
queryDef.SubFields = "Table1.name, Table1.Address, Table2.name,
Table2.Salary"
queryDef.Tables = "Table1 CROSS JOIN Table2"
Unión interna
SQL
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
INNER JOIN Table2 ON Table1.C1 = Table2.C3
ArcObjects
queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables = "Table1 INNER JOIN Table2 ON Table1.C1 =
Table2.C3"
Unión externa izquierda
SQL
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
LEFT OUTER JOIN Table2 ON Table1.C1 = Table2.C3
ArcObjects
queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables = "Table1 LEFT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3"
Unión derecha externa
SQL
SELECT * FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3
ArcObjects
queryDef.SubFields = "*"
queryDef.Tables = "Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3"
NULLIF
NULO SI devuelve NULO si los dos parámetros proporcionados son iguales; de lo contrario, se devuelve el valor del primer parámetro
SQL
SELECT Location, NULLIF(Sales, Forecast) as Results FROM
StoreSales
ArcObjects
queryDef.SubFields = " Location, NULLIF(Sales, Forecast) as
Results"
queryDef.Tables = "StoreSales"
StoreSales:
Ubicación | Ventas | Previsión |
Redlands | 39000 | 55000 |
Palm Springs | 60000 | 61000 |
Riverside | 40000 | 40000 |
Resultado:
Ubicación | Resultados |
Redlands | 39000 |
Palm Springs | 60000 |
Riverside | NULO |
ORDER BY
Especifica el orden de clasificación. El orden puede ser ascendente (ASC) o descendente (DESC) y ser recogidos. Los tipos de intercalación incluyen BINARY(BIN), CASESENSITIVE(CASE) y NOCASESENSITIVE(NOCASE). La intercalación binaria es tanto caso como acento sensibles. Casesensitive distingue entre mayúsculas y minúsculas cartas. Nocasesensitive no distingue entre mayúsculas y minúsculas cartas.
SQL
SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME
ArcObjects
pQueryDef.SubFields = "STATE_NAME, POP1990"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY STATE_NAME"
SQL
SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME COLLATE BINARY ASC
ArcObjects
pQueryDef.SubFields = "STATE_NAME, POP1990"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY STATE_NAME COLLATE BINARY
ASC"