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. 关于uniapp的兼容性的一些问题

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  2. KubeSphere 社区双周报|2024.03.29-04.11

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  3. 工作中的技术总结_ form表单的前后台交互 _20210825

    工作中的技术总结_ form表单的前后台交互 _20210825 在项目经常会使用 form 表单 进行数据的 页面展示 以及数据的 提交和后台处理 1.数据是怎么从后台传递到前台的 model.ad ...

  4. [转载] Ubuntu上Firefox字体太小--高分屏背锅——高清分辨率屏幕下浏览器设置

    版权声明:本文为CSDN博主「mythinker2」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/myth ...

  5. 关于C++当中的“模板函数”

    本人C++草鸟,在工作当中遇到了这个问题,就简单做个记录.

  6. Linux系统部署Jmeter环境

    1.Linu安装Java环境 Jmeter是Java开发的,需要依赖JDK环境,因此我们需提前安装好JDK,安装地址:https://www.oracle.com/technetwork/java/j ...

  7. .NET9 - 新功能体验(二)

    书接上回,我们继续来聊聊.NET9和C#13带来的新变化. 01.新的泛型约束 allows ref struct 这是在 C# 13 中,引入的一项新的泛型约束功能,允许对泛型类型参数应用 ref ...

  8. java——棋牌类游戏斗地主(singleddz3.0)

    这是本人最近一段时间写的斗地主的java代码,大体框架都实现了,主要缺少,AI的智能算法. 下载地址http://download.csdn.net/detail/novelly/5695445 im ...

  9. Java深度历险(九)——Java安全

    安全性是Java应用程序的非功能性需求的重要组成部分,如同其它的非功能性需求一样,安全性很容易被开发人员所忽略.当然,对于Java EE的开发人员来说,安全性的话题可能没那么陌生,用户认证和授权可能是 ...

  10. x-easypdf 初始

    一.概述 一个 java 语言简化处理 pdf 的框架 项目主页 https://x-easypdf.cn 项目概述 x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfb ...