SuperMap Objects .NET知识库:SQL查询以及通配符
1 SQL 语句的构建
在SuperMap组件产品中,有许多接口都用到了过滤条件,也就是标准 SQL 语句中的 WHERE 子句部分,比如各种涉及属性查询的接口、网络分析中弧段的过滤条件、拓扑处理中相交不打断的过滤条件等。本节专题特别总结了如何正确构建 SQL 语句,以及在 SuperMap 中支持的一些函数和运算符等。
1.1 SQL 表达式
一般情况下,SQL表达式的语法为“Select …(需要输出的字段名) from … (数据集名)where…(查询条件)(order by …asc/desc)(结果排序字段,可选)”。此外还有Group By 子句,在下面单独介绍。
在各种查询方法中,WHERE 子句都是通过用户直接构建,以字符串的形式作为参数使用。在 SQL 语句构建过程中,由于 SDBPlus 文件型数据源的属性表是存储在 Acess MDB 数据库中,使用的1.1.1对数值的查询
数值的查询可以使用 “=”、“<>”、“>”、“<”、“<=”、“>=”等操作符以及“BETWEEN...AND”关键字。例如:World_countries.Pop_1994 Between 10,000,000 and 20,000,000,该条件查询的是pop_1994字段值(1994年人口)在1,000万到2,000万之间的记录。
1.1.2模糊查询
模糊查询使用关键字“LIKE”,而且不同类型的数据源使用的匹配符不尽相同。例如:
1.1.2.1 部分匹配
World_countries.CAPITAL Like "a*" (或 'a*')(注:数据库型数据源中的1.1.2.2 完全匹配
World_countries.CAPITAL Like "Beijing" (或 'Beijing')查询的是World_countries数据集中CAPITAL字段值为Beijing的国家。
1.1.2.3 单字匹配
World_countries.ISO_2 Like "A?" (或'A?') (注:数据库型数据源中的1.1.3查询特定值
使用关键字“IN”,确定表达式的值是否等于指定列表内一系列值中的任意一个值。例如:
World_countries.ISO_2 in ('AD','BS','PH')查询的是World_countries数据集中ISO_2字段值为 AD,BS,PH 的一个或几个国家。
World_countries.SmID in (1,4)查询的是World_countries数据集中SmID字段值为1,4的国家。
注:对于字符型字段的查询需要将查询值使用英文单引号''或英文双引号""括起来,而数值型字段的查询不需要。
1.1.4查询某个字段值是否为空
使用关键字“IS NULL”或“IS NOT NULL”,例如:
World_countries.ISO_2 is NULL查询的是World_countries数据集中ISO_2字段值为空的那些国家。
1.1.5算术表达式构建组合语句
SQL 条件中可使用任意算术表达式,可以用括号来定运算优先级。例如:
World_countries.POP_1994 / (World_countries.SmArea/1,000,000) > 500,查询的是World_countries数据集中,1994年每平方公里(因为属性表中Area单位为米,所以使用World_countries.SmArea/1,000,000将其换算为平方公里)土地上人口大于500的国家。
1.1.6逻辑表达式构建组合语句
可以使用“AND”、“OR”、“NOT”关键字组合任意合法的条件表达式。例如:
World_countries.SmArea> 5,000,000 AND World_countries.POP_1994 < 100,000,000查询的是国土面积大于500万平方公里(上面的数值已经换算成平方公里)并且94年人口小于1亿的国家。
1.1.7比较运算符在字符型字段中的应用
比较运算符,如“>”、“<”、“>=”、“<=”、“<>”等,例如:
World_countries.NAME >= 'N'查询的是World_countries数据集中NAME字段值的首字母在N到Z之间的那些国家。
1.1.8日期型字段的查询
例如:World_countries. T_date= #08/10/94#
注:
Ø SQL Server 数据源中,查询语句为: World_countries.T_date= '1994-08-10';
Ø ORACLE数据源中,查询语句为: World_countries.T_date= TO_DATE('1994-08-10', 'YYYY-MM-DD');
Ø UDB数据源中,查询语句为:World_countries.T_date= to_date(1994-08-10 00:00:00);
查询的是World_countries数据集中date字段为1994-08-10的记录,即1994-08-10当天的记录。
World_countries.T_date Between #01/01/94# and #12/31/94# 查询的是World_countries数据集中1994年全年的记录。
1.1.9派生字段
若查询结果字段中使用到了多个字段运算的派生字段,可以用关键字“AS”来为其指定一个别名显示在输出的结果表中。例如:
(Pop2000-Pop_1990)/Pop_1990 as Growth_Rate,若不给定别名,系统则使用表达式内容本身作为临时字段名。若指定多个派生字段表达式,可用逗号分隔。
1.2 分组统计 GROUP BY
“SQL查询”功能还可以根据指定的某个(或多个)字段将查询结果进行分组,使指定字段上有相同值的记录分在一组,再通过聚合函数、数学函数等函数对查询结果进行统计计算而得到新的临时字段结果,当然,得到的统计结果字段同时也是上文述及的派生字段。
例如:select World_Countries.CONTINENT,Count(World_Countries.SmID) as Count from World_Countries group by World_Countries.CONTINENT 对世界地图中每一组CONTINENT相同的记录进行统计个数,即该洲内所有国家的个数。
注:在分组统计查询语句中,结果浏览字段,只能是分组字段(可以多个,置于前)和统计函数派生的字段(统计函数可以是多个,比如 Sum()、Count() 以 及Avg() 函数可以同时使用,但必须是对最后一个统计字段的统计。)
SuperMap Objects .NET知识库:SQL查询以及通配符的更多相关文章
- sql搜索like通配符的用法详解
http://www.lmwlove.com/ac/ID878 有很多朋友写了几年的like搜索,可能对like后面通配符的用法都不了解,甚至于%的作用是什么都不清楚.在这篇文章中,我们就一起来学习一 ...
- LIKE模糊查询的通配符
LIKE模糊查询的通配符 通配符 说明 示例 % 包含零个或多个字符的任意字符串. WHERE title LIKE '%computer%' 将查找在书名中任意位置包含单词 "comput ...
- Hibernate SQL查询 addScalar()或addEntity()
本文完全引用自: http://www.cnblogs.com/chenyixue/p/5601285.html Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原 ...
- 【T-SQL基础】01.单表查询-几道sql查询题
概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...
- Hibernate原生SQL查询
最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...
- Hibernated的sql查询
记录一下学习Hibernate的心得 1.为什么HIbernate会支持原生态的sql查询? HQL查询语句虽然方便我们查询,但是基于HQL的查询会将查询出来的对象保存到hibernate的缓存当中, ...
- Sql Server中通配符
Sql Server中通配符的使用 通配符_ "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只 ...
- mysql查询中通配符的使用
mysql查询中通配符的使用 在mysql查询中经常会使用通配符,并且mysql的通配符和pgsql的存在区别(稍候再讨论),而且mysql中还可以使用正则表达式. SQL模式匹配: “_” ...
- Sql Server中通配符的使用
Sql Server中通配符的使用 通配符_ "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只 ...
- 索引 使用use index优化sql查询
好博客:MySQL http://webnoties.blog.163.com/blog/#m=0&t=1&c=fks_08407108108708107008508508609508 ...
随机推荐
- AI五子棋_06 坐标表示到图形表示的算法 Python实现
AI五子棋 第六步 恭喜你到达第六步! 你已经成功实现了公钥体系最为关键的部分.现在服务器相信你就是你了,下面开始你的战斗. 五子棋的棋盘有15×15个交点,一共有225个交点,我们可以在每一个交点上 ...
- python实现基于RPC协议的接口自动化测试
01什么是RPC RPC(Remote Procedure Call)远程过程调用协议是一个用于建立适当框架的协议.从本质上讲,它使一台机器上的程序能够调用另一台机器上的子程序,而不会意识到它是远程的 ...
- Codeforces 777 题目研讨
题目连接 A B C D E 题目分析 A 难度:普及− 题面翻译: 给你三张牌:\(0\),\(1\),\(2\). 最初选一张,然后依次进行 \(n\) 次交换,交换规则为:中间一张和左边的一张, ...
- [这可能是最好的Spring教程!]Maven的模块管理——如何拆分大项目并且用parent继承保证代码的简介性
问题的提出 在软件开发中,我们为了减少软件的复杂度,是不会把所有的功能都塞进一个模块之中的,塞在一个模块之中对于软件的管理无疑是极其困难且复杂的.所以把一个项目拆分为模块无疑是一个好方法 ┌ ─ ─ ...
- 实战:Mailivery 模拟登录
问题情景 混淆群内的小伙伴遇到这么个问题,Mailivery 这个网站登录后,明明提交的表单(邮箱和密码也正确).请求头等等都没问题,为啥一直重定向到登录页面呢?唉,该出手时就出手啊,我也看看咋回事吧 ...
- OpenGL编程指南(原书第9版)
这本书是<OpenGL编程指南(原书第9版)>,也称为<OpenGL Programming Guide: The Official Guide to Learning OpenGL ...
- JVM学习笔记-操作数栈(Operand Stack)
Like the local variables, the operand stack is organized as an array of words. But unlike the local ...
- 如何快速构建基于Spring4.0的Rest API(攻略)
本文由 ImportNew - 邬柏 翻译自 javacodegeeks.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Ja ...
- 简单理解Linux File的操作
类Unix系统是支持多个进程打开同一个文件,进行读写. 得益于类Unix系统对于文件操作的特殊设计. 分为三个数据结构 进程表项:其中包含进程中打开的文件和设备的文件描述符.还包含该文件描述符对应的文 ...
- 【漏洞分析】Vestra DAO 攻击事件:这个质押项目它取款不核销呀
背景信息 攻击交易:https://app.blocksec.com/explorer/tx/eth/0x9a1d02a7cb9fef11fcec2727b1f9e0b01bc6bcf5542f5b6 ...