热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ArcEngine之接口IQueryDef,数据库中使用SQL语句(转载)

文件地理数据库允许在QueryDef中通过SubFields(字段列表)方法使用表达式和别名完善分析和报告。此外,通过PostFixCla

文件地理数据库允许在 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;


推荐阅读
  • 一、使用ContentProvider(内容提供者)共享数据ContentProvider在android中的作用是对外共享数据,也就是说 ... [详细]
  • 开发笔记:Xunit测试使用个人小结
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Xunit测试使用个人小结相关的知识,希望对你有一定的参考价值。因工作中用到xunit测试,故总结下用法,以供个人参考使 ... [详细]
  • Qt 学习笔记(5)绘图   五子棋游戏
    在上一篇博客CQt学习笔记(4)绘图中介绍了Qt中的绘图方法,基于上一篇的博客的知识,使用QPainter设计一个五子棋的棋 ... [详细]
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • Mysql调优的顺序及面试问题总结
    文章目录一、调优相关1.第一步:本地explain线上查询遇到的第一个坑:遇到的第二个坑:2.第二步:覆盖索引3.第三步&# ... [详细]
  • 开发网站你需要知晓的部分专用术语
      越来越多的企业和个人都在拥有属于自己的网站门户,首当其冲的就是你得知晓几个网站方面的专业术语,先是中就有好多的客户不明白这些,造成误会是正常的,那不如我们对它有个大致的了解,这样就不容易感觉 ... [详细]
  • Mysql MySqlBulkLoader在.NET平台下的批量插入
    批量导入publicboolTranBatchImpo ... [详细]
  • 接口自动化相关面试题
    你好,我是懂Java的测试最近辅导简历,有同学向我反馈,自学过接口自动化、没有落地接口自动化项目办?还有很多同学落地实践过自 ... [详细]
  • 一、如果使用默认的1521端口,让实例自动注册到该监听上,那么local_listener无需设置,listener.ora文件按照正常方 ... [详细]
  • 1、创建高级对象使用构造函数来创建对象构造函数是一个函数,调用它来例示并初始化特殊类型的对象。可以使用new关键字来调用一个构造函数。下面给出了使用构造函数的新示例。 ... [详细]
  • 开发笔记:js正则表达式属性及方法的使用
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了js正则表达式属性及方法的使用相关的知识,希望对你有一定的参考价值。正则表达式直接量 ... [详细]
  • Whatisthefastest(parallel?)waytofindasubstringinaverylongstringusingbitwiseoperator ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
author-avatar
121lzg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有