zoukankan      html  css  js  c++  java
  • 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() 函数可以同时使用,但必须是对最后一个统计字段的统计。)

  • 相关阅读:
    mmdetection安装问题(nms is not compiled with GPU support)
    【洛谷日报#75】浅谈C++指针
    NOIP专题复习3 图论-强连通分量
    NOIP专题复习2 图论-生成树
    NOIP专题复习1 图论-最短路
    题解 P1967 货车运输
    【转】linux expoll模型
    spring mvc 4.1支持protobuf converters
    ubuntu install jdk
    nosql理论基础
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/13642036.html
Copyright © 2011-2022 走看看