文件地理数据库允许在 QueryDef 中通过 SubFields(字段列表)方法使用表达式和别名完善分析和报告。此外,通过 PostFixClause 支持 ORDER BY 和 GROUP BY。在支持 GROUP BY 时,表达式包括聚合函数,如 MIN、MAX 和 SUM。
ALIAS
提供给列另外一个名称以提供更易于理解的输出。
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
评估条件列表并返回多个结果表达式之一。
SQL
SELECT name,salary,
CASE
WHEN salary <&#61; 2000 THEN &#39;low&#39;
WHEN salary > 2000 AND salary <&#61; 3000 THEN &#39;average&#39;
WHEN salary > 3000 THEN &#39;high&#39;
END AS salary_level
FROM employees
ORDER BY salary ASC
ArcObjects
pQueryDef.SubFields &#61; "name,salary,
CASE
WHEN salary <&#61; 2000 THEN &#39;low&#39;
WHEN salary > 2000 AND salary <&#61; 3000 THEN &#39;average&#39;
WHEN salary > 3000 THEN &#39;high&#39;
END AS salary_level"
pQueryDef.Tables &#61; " employees"
pQueryDef.PostfixClause &#61; " ORDER BY salary ASC "
COALESCE
返回其参数的第一个非空字段值。
SQL
SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
Contact_Phone
FROM Contact_Info
ArcObjects
queryDef.SubFields &#61; "Name, COALESCE(Business_Phone, Cell_Phone,
Home_Phone) Contact_Phone"
queryDef.Tables &#61; "Contact_Info"
Contact_Info&#xff1a;
名称
Business_Phone
Cell_Phone
Home_Phone
Jeff
531-2531
622-7813
565-9901
Laura
空值
772-5588
312-4088
Peter
空值
空值
594-7477
结果&#xff1a;
名称
Contact_Phone
Jeff
531-2531
Laura
772-5588
Peter
594-7477
表达式
SQL
SELECT SIN(sunangle)
FROM sightings
ArcObjects
queryDef.SubFields &#61; "SIN(sunangle)"
queryDef.Tables &#61; "sightings"
设置函数
运算符 描述
AVG
计算组中所有值的平均值。空值会被忽略。
COUNT(*)&#xff0c;COUNT&#xff08;表达式&#xff09;
COUNT(*) 返回表中的记录数。包括空值。COUNT&#xff08;表达式&#xff09;返回指定表达式的值数。空值将被忽略。
MAX
查找组中的最大值。空值会被忽略。
MIN
查找组中的最小值。空值会被忽略。
STDDEV, STDDEV_SAMP
返回表达式的样本标准差。
STDDEV_POP
返回表达式的总体标准差。
SUM
查找组中的值。空值会被忽略。
VAR, VAR_SAMP
返回表达式的样本方差。
VAR_POP
返回表达式的总体方差。
算述运算符
算术运算符用于对数值进行加、减、乘、除的运算。
运算符 描述
*
乘法算术运算符
/
除法算术运算符
&#43;
加法算术运算符
-
减法算术运算符
函数
以下是文件地理数据库支持的整个函数列表。
日期函数
函数 描述
CURRENT_DATE
返回当前日期。
EXTRACT (extract_field FROMextract_source)
返回 extract_source 的 extract_field 部分。extract_source 参数是一个日期时间表达式。extract_field 参数可以是下列任一关键字&#xff1a;YEAR、MONTH、DAY、HOUR、MINUTE 或 SECOND。
CURRENT TIME
返回当前时间。
CURRENT_TIMESTAMP
返回当前时间和日期。
字符串函数
以 string_exp 表示的参数可以是列名、字符串文本或者另一个标量函数的结果&#xff0c;其基础数据类型可表示为字符型。
以 character_exp 表示的参数是长度可变的字符型字符串。
以 start 或 length 表示的参数可以是数值文本或者另一个标量函数的结果&#xff0c;其基础数据类型可表示为数值型。
这些字符串函数以 1 为基础&#xff1b;即字符串的第一个字符为字符 1。
函数 描述
CHAR_LENGTH(string_exp)
返回字符串表达式的字符长度。
CONCAT(string_exp1, string_exp2)
返回 string_exp2 与 string_exp1 连接后得到的字符串。
LOWER(string_exp)
返回一个与 string_exp 相等的字符串&#xff0c;其中所有大写字符均会转换为小写字符。
POSITION(character_expIN character_exp)
返回第一个字符表达式在第二个字符表达式中的位置。结果是一个确切的数值&#xff0c;采用预先定义的精度且小数位数为零。
SUBSTRING (string_expFROM start FOR length)
返回一个从 string_exp 衍生而来的字符串&#xff0c;其起始字符位置由 start 指定&#xff0c;字符数由 length 指定。
TRIM(BOTH | LEADING | TRAILING trim_characterFROM string_exp)
返回字符串的开头、末尾或两端移除trim_character 后所得的 string_exp。
UPPER(string_exp)
返回一个与 string_exp 相等的字符串&#xff0c;其中所有小写字符均会转换为大写字符。
数值函数
所有数值函数均返回数值型值。
以 numeric_exp、float_exp 或 integer_exp 表示的参数可以是列名、另一个标量函数的结果或数值文本&#xff0c;其基础数据类型可表示为数值型。
函数 描述
ABS(numeric_exp)
返回 numeric_exp 的绝对值。
ACOS(float_exp)
返回作为角度的 float_exp 的反余弦值&#xff0c;用弧度表示。
ASIN(float_exp)
返回作为角度的 float_exp 的反正弦值&#xff0c;用弧度表示。
ATAN(float_exp)
返回作为角度的 float_exp 的反正切值&#xff0c;用弧度表示。
CEILING(numeric_exp)
返回大于或等于 numeric_exp 的最小整数。
COS(float_exp)
返回 float_exp 的余弦值&#xff0c;其中 float_exp是以弧度表示的角度。
FLOOR(numeric_exp)
返回小于或等于 numeric_exp 的最大整数。
LOG(float_exp)
返回 float_exp 的自然对数。
LOG10(float_exp)
返回 float_exp 的以 10 为底的对数。
MOD(integer_exp1, integer_exp2)
返回 integer_exp1 除以 integer_exp2 所得的余数。
POWER(numeric_exp, integer_exp)
返回 numeric_exp 的 integer_exp 次幂的值。
ROUND(numeric_exp, integer_exp)
返回四舍五入至小数点右侧第 integer_exp位的 numeric_exp。如果 integer_exp 为负数&#xff0c;则 numeric_exp 将被四舍五入至小数点左侧第 |integer_exp| 位。
SIGN(numeric_exp)
返回 numeric_exp 正负号的标志。如果numeric_exp 小于零&#xff0c;则返回 -1。如果numeric_exp 等于零&#xff0c;则返回 0。如果numeric_exp 大于零&#xff0c;则返回 1。
SIN(float_exp)
返回 float_exp 的正弦值&#xff0c;其中 float_exp是以弧度表示的角度。
TAN(float_exp)
返回 float_exp 的正切值&#xff0c;其中 float_exp是以弧度表示的角度。
TRUNCATE(numeric_exp, integer_exp)
返回截断至小数点右侧第 integer_exp 位的numeric_exp。如果 integer_exp 为负数&#xff0c;则 numeric_exp 将被截断至小数点左侧第 |integer_exp| 位。
GROUP BY
用于按一或多列收集多条记录的数据并对结果进行分组
SQL
SELECT STATE_NAME, SUM(POP1990) as TotalPopulation
FROM counties
GROUP BY STATE_NAME ORDER BY STATE_NAME
ArcObjects
pQueryDef.SubFields &#61; "STATE_NAME, SUM(POP1990) as
TotalPopulation"
pQueryDef.Tables &#61; "counties"
pQueryDef.PostfixClause &#61; "GROUP BY STATE_NAME ORDER BY
STATE_NAME"
HAVING
GROUP BY 的子句。
SQL
SELECT department, MAX(salary) as Highest_salary
FROM employees
GROUP BY department HAVING MAX(salary) <50000
ArcObjects
queryDef.SubFields &#61; "department, MAX(salary) as Highest_salary"
queryDef.Tables &#61; "employees"
pQueryDef.PostfixClause &#61; "GROUP BY department HAVING MAX(salary)
<50000"
JOINS
合并两个或多个表的记录。
Cross Join
SQL
SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
FROM Table1 CROSS JOIN Table2
ArcObjects
queryDef.SubFields &#61; "Table1.name, Table1.Address, Table2.name,
Table2.Salary"
queryDef.Tables &#61; "Table1 CROSS JOIN Table2"
Inner Join
SQL
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
INNER JOIN Table2 ON Table1.C1 &#61; Table2.C3
ArcObjects
queryDef.SubFields &#61; "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables &#61; "Table1 INNER JOIN Table2 ON Table1.C1 &#61;
Table2.C3"
Left Outer Join
SQL
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
LEFT OUTER JOIN Table2 ON Table1.C1 &#61; Table2.C3
ArcObjects
queryDef.SubFields &#61; "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables &#61; "Table1 LEFT OUTER JOIN Table2 ON Table1.C1 &#61;
Table2.C3"
Right Outer Join
SQL
SELECT * FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 &#61;
Table2.C3
ArcObjects
queryDef.SubFields &#61; "*"
queryDef.Tables &#61; "Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 &#61;
Table2.C3"
NULLIF
如果所提供的两个参数相等&#xff0c;则 NULLIF 返回空值&#xff1b;否则&#xff0c;返回第一个参数的值。
SQL
SELECT Location, NULLIF(Sales, Forecast) as Results FROM
StoreSales
ArcObjects
queryDef.SubFields &#61; " Location, NULLIF(Sales, Forecast) as
Results"
queryDef.Tables &#61; "StoreSales"
StoreSales&#xff1a;
位置 销售 预测
雷德兰兹
39000
55000
Palm Springs
60000
61000
Riverside
40000
40000
结果&#xff1a;
位置 结果
雷德兰兹
39000
Palm Springs
60000
Riverside
空值
ORDER BY
指定排序顺序。顺序可以是升序 (ASC) 或降序 (DESC)&#xff0c;并将两者加以整理。排序规则类型包括 BINARY(BIN)、CASESENSITIVE(CASE) 和 NOCASESENSITIVE(NOCASE)。二进制排序规则区分大小写和重音。区分大小写排序规则区分大写和小写字母。不区分大小写排序规则不区分大写和小写字母。
SQL
SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME
ArcObjects
pQueryDef.SubFields &#61; "STATE_NAME, POP1990"
pQueryDef.Tables &#61; "counties"
pQueryDef.PostfixClause &#61; "ORDER BY STATE_NAME"
SQL
SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME COLLATE BINARY ASC
ArcObjects
pQueryDef.SubFields &#61; "STATE_NAME, POP1990"
pQueryDef.Tables &#61; "counties"
pQueryDef.PostfixClause &#61; "ORDER BY STATE_NAME COLLATE BINARY
ASC"
---------------------
作者&#xff1a;我行故我在0611
来源&#xff1a;CSDN
原文&#xff1a;https://blog.csdn.net/kone0611/article/details/72865416
版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请附上博文链接&#xff01;