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查询以及通配符的更多相关文章

  1. sql搜索like通配符的用法详解

    http://www.lmwlove.com/ac/ID878 有很多朋友写了几年的like搜索,可能对like后面通配符的用法都不了解,甚至于%的作用是什么都不清楚.在这篇文章中,我们就一起来学习一 ...

  2. LIKE模糊查询的通配符

    LIKE模糊查询的通配符 通配符 说明 示例 % 包含零个或多个字符的任意字符串. WHERE title LIKE '%computer%' 将查找在书名中任意位置包含单词 "comput ...

  3. Hibernate SQL查询 addScalar()或addEntity()

    本文完全引用自: http://www.cnblogs.com/chenyixue/p/5601285.html Hibernate除了支持HQL查询外,还支持原生SQL查询.          对原 ...

  4. 【T-SQL基础】01.单表查询-几道sql查询题

    概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...

  5. Hibernate原生SQL查询

    最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...

  6. Hibernated的sql查询

    记录一下学习Hibernate的心得 1.为什么HIbernate会支持原生态的sql查询? HQL查询语句虽然方便我们查询,但是基于HQL的查询会将查询出来的对象保存到hibernate的缓存当中, ...

  7. Sql Server中通配符

    Sql Server中通配符的使用 通配符_ "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只 ...

  8. mysql查询中通配符的使用

    mysql查询中通配符的使用     在mysql查询中经常会使用通配符,并且mysql的通配符和pgsql的存在区别(稍候再讨论),而且mysql中还可以使用正则表达式. SQL模式匹配: “_” ...

  9. Sql Server中通配符的使用

    Sql Server中通配符的使用 通配符_ "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只 ...

  10. 索引 使用use index优化sql查询

    好博客:MySQL http://webnoties.blog.163.com/blog/#m=0&t=1&c=fks_08407108108708107008508508609508 ...

随机推荐

  1. 16收16发ARINC429模块

    6通道发送, 16通道接收* 发送通道:每路发送通道FIFO大小为:511 x 32bit(CHR32216/32316) ,缓存256条发送消息(CHR32216-EX/32316-EX)发送FIF ...

  2. 一次彻底掌握数据中心级的JVM调优实战经验

    出现内存溢出的场景通常发生在应用程序中存在内存泄漏.对象生命周期过长.对象频繁创建但未能及时回收等问题.以下是几个真实的业务场景,结合内存溢出问题,并从多个角度提出优化方法,来提高内存使用效率. 场景 ...

  3. VS2019插件更新慢的解决办法

    VS2019更新巨慢,可以尝试通过以下几个方法解决: 1. 关闭IPV6 关闭IPV6:Win10怎么样禁用IPV6 如何关闭IPV6协议-百度经验 (baidu.com) 2. 选择最快的DNS 百 ...

  4. ABP - 菜单配置(导航栏选中高亮,高亮并定位当前标题)

    配置一个如上图所示的菜单: 1.打开文件NavigationProvider.cs 添加如下代码(如下图所示) .AddItem(new MenuItemDefinition( PageNames.A ...

  5. 货店管理(delphi+sqlserver)

    之前给朋友做的货店管理程序,个人使用,数据量小,delphi开发的,sqlserver express版,fastReport做的报表(报表可以修改). 源代码全给他的,呵呵,他也可以简单修改了.   ...

  6. ABC240Ex Sequence of Substrings

    ABC240Ex Sequence of Substrings LIS 的好题改编. 约定 \(S(l,r)\) 为字符串 \(s\) 中第 \(l\) 位到底 \(r\)​ 位. \(S(l,r)& ...

  7. 基于木舟平台浅谈surging 的热点KEY的解决方法

    一.概述 上篇文章介绍了基于surging的木舟平台如何构建起微服务,那么此篇文章将介绍基于木舟平台浅谈surging 的热点KEY的解决方法 木舟 (Kayak) 是什么? 木舟(Kayak)是基于 ...

  8. CSS3实现放大镜效果

    市面上基本上所有的购物平台.商城上的商品详情页,对于商品的图片都是有放大功能.那么这个功能主要是怎么实现的呢?CSS3实现放大镜效果主要依赖于CSS的一些高级特性,如transform.transit ...

  9. 我和JVM初次约会

    前言:该篇是参考结合<高手深度解析:JVM是什么>,自己剔除添加了一些内容整理的而来,这里感谢<高手深度解析:JVM是什么>的文章的指点讲解. JVM的生命周期 "J ...

  10. Docker之磁盘清理

    Docker 很占用空间,每当我们运行容器.拉取镜像.部署应用.构建自己的镜像时,我们的磁盘空间会被大量占用. 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何 ...