SuperMap iObjects .NET 11i 知识库
SQL查询  

2     运算符及函数

本小节简要介绍各类型统计函数及运算符的使用,欲深入了解还需参阅相关SQL书籍文档。

2.1     运算符号

系统中提供的SQL查询条件运算符除了常用的数学运算符和逻辑运算符外,还提供了一些比较特殊的运算符,下面将对系统提供的运算符进行简单说明,如表 2.1所示:

2.1 运算符说明列表

运算符

含义

举例

算术运算符

+

加法

RENT + UTILITIES <= 800

-

减法

POP_2002 - POP_1994

*

乘法

DENSITY * AREA > 5000000

/

除法

VALUE / POP = 50000

%

取模

VALUE1 % VALUE2

比较运算符

=

等于

CODE = 100

大于

POP_2002 > 5000000

小于

INDUST_GROWTH < 0

>=

大于等于

RENT + UTILITIES >= 800

<=

小于等于

RENT + UTILITIES <= 800

<> 

不等于

VALUE1 <> 100

!

非,与“>”“<”联合使用成“!<”(不小于)“!>”(不大于)

VALUE1 !> 100 VALUE1 !< 100

逻辑运算符

AND

连接两个布尔型表达式并当两个表达式都为TRUE时返回TRUE

CODE = 100 AND VALUE > 20000

NOT

对任何其它布尔运算符的值取反

NOT Is BACHELOR

OR

将两个条件结合起来,如果两个布尔表达式中的一个为 TRUE,那么就为 TRUE

SALES > 20000 OR ORDERS > 20000

In

如果操作数等于表达式列表中的一个,那么就为 TRUE

PROVINCE In ("GUANGDONG")

Between

确定一个表达式在某个范围之内,那么就为TRUE。一般与AND同时使用

SALES Between 4095 AND 20000

Like

确定给定的字符串完全与指定的模式匹配

COUNTRY Like "CANADA"

其他

Is NULL

确定一个表达式是为NULL,主要是文本型字段

CONTINENT Is NULL

Is TRUE

确定一个表达式为True,主要针对布尔型字段

MARRIED Is TRUE

Is FALSE

确定一个表达式为False,主要是布尔型字段

MARRIED Is FALSE

2.2     聚合函数

聚合函数对一组值执行计算并得到单一的值。除 COUNT 函数之外,聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都得到相同的值。除 COUNT() 外,其它聚合函数均不能对文本数据类型使用。在 SuperMap 中聚合函数中的表达式一般采用属性表的字段名,如表 2.2所示:

2.2 聚合函数说明列表

聚合函数

含义

举例

Avg

AVG[ALL|DISTINCT]expression)计算一组中所有ALL(筛选出具有唯一值DISTINCT)记录的〈表达式〉平均值。空值将被忽略。

type, Avg (amount) as Average, Count(type)

Count

COUNT{[ALL|DISTINCT]expression]|*})返回分组后各组中记录的总数。

type,Avg (amount) as Average, Count ( * )

Max

找出一组中所有记录的〈表达式〉最大值。

Code, Count ( Code ), Max ( Length )

Min

找出一组中所有记录的〈表达式〉最小值。

Code, Count ( Code ), Min ( Length )

Sum

计算一组中所有记录的〈表达式〉总计值。

Sales, Customer, Sum ( AMOUNT )

Stdev

给定表达式中所有值的统计标准偏差。

Type, Stdev ( expression )

Stdevp

返回给定表达式中所有值的填充统计标准偏差。

Type, Stdevp ( expression )

Var

返回给定表达式中所有值的统计方差。

Type, Var ( expression )

Varp

返回给定表达式中所有值的填充统计方差。

Type, Varp ( expression )

2.3     数学函数

数学函数对数字表达式进行数学运算并返回运算结果。数学函数在SuperMap GIS 产品中的表达式一般采用属性表的字段名或字段名构成的表达式,如Cos(Slope)、Ceiling(Pop/Area)等,关于数学函数的说明如表 2.3所示。

2.3 数学函数说明列表

数学函数

含义

举例

Abs

返回给定数字表达式的绝对值。 适用于短整型、长整型、单精度、双精度、货币等类型字段构成的表达式。

Abs ( data )

Acos

返回以弧度表示的角度值,该角度值的余弦为给定的float表达式;本函数亦称反余弦。适用于单精度或双精度类型字段构成的表达式,表达式的取值范围从-11

Acos ( data )

Asin

返回以弧度表示的角度值,该角度值的正弦为给定的 float 表达式;亦称反正弦。 适用于单精度或双精度类型字段构成的表达式,表达式的取值范围从-11

Asin ( data )

Atan

返回以弧度表示的角度值,该角度值的正切为给定的 float 表达式;亦称反正切。

Atan ( data )

Ceiling

返回大于或等于所给数字表达式的最小整数。适用于短整型、长整型、单精度、双精度、货币等类型字段构成的表达式。

Ceiling( data )

Cos

返回给定表达式中给定角度(以弧度为单位)的三角余弦值。

Cos ( angle )

Sin

以近似数字 ( float ) 表达式返回给定角度(以弧度为单位)的三角正弦值。

Sin ( Slope )

Cot

返回给定 float 表达式中指定角度(以弧度为单位)的三角余切值。

Cot ( angle )

Tan

返回输入表达式的正切值。

Tan ( Slope )

Degrees

当给出以弧度为单位的角度时,返回相应的以度数为单位的角度。

Degrees ( angle )

Exp

返回所给的 float 表达式的以 e(约等于2.71828182845905)为底的指数值。

Exp ( data )

Floor

返回小于或等于所给数字表达式的最大整数。

FLOOR ( 123.45 ) , FLOOR ( -123.45 ) , FLOOR ( $123.45 )

Log

返回给定 float 表达式的自然对数。

Log ( data ) Lndata

Log10

返回给定 float 表达式的以10为底的对数。

Log10 ( data ) Log10,data

PI

返回 PI 的常量值,函数输入为空。

PI() * City_R.SMID as test

Power

返回给定表达式乘指定次方的值,第一个参数指定数值型字段(或表达式),第二个参数指定次方数。

Power(expression,2) as Area

Radians

对于在数字表达式中输入的度数值返回弧度值。

Radians ( angle )

Rand

返回 0 1 之间的随机 float 值,函数输入为空。

Rand ()* City_R.SMID as test

Round

返回指定数值型字段(或表达式)的四舍五入到指定的小数位数的数字。第一个参数指定数值型字段(或表达式),第二个参数指定小数位数。如果没有指定小数位数时,默认四舍五入为最接近的整数。PostgreSQLDB2不支持指定小数位数的查询。

Round (expression,2), Round (expression)

Sign

返回给定表达式的正 (+1)、零 (0) 或负 (-1) 号。

Sign ( data )

Square

返回给定表达式的平方。

Square ( Production )

Sqrt

返回给定表达式的平方根。

Sqrt ( Production )

CBool

将一表达式转成 Boolean 值。如果表达式的结果为非零的值,CBool 返回 -1;否则返回 0

CBooldata

CDate

将表达式转成 Date 类型字段。

CDatedata

CDbl

将表达式转成 Double类型字段。

CDbldata

CInt

将表达式转成 Integer类型字段。

CIntdata

CLng

将表达式转成 Long类型字段。

CLngdata

CSng

将表达式转成 Single类型字段。

CSngdata

CStr

将表达式转成 String类型字段。

CStrdata

Fix

删除 number 的小数部份而返回剩下的整数。如果 number 为负数,则 Fix 则会返回大于或等于 number 的第一个负整数。

Fixdata

Int

删除 number 的小数部份而返回剩下的整数。如果 number 为负数,则 Int 返回小于或等于 number 的第一个负整数

Intdata

2.4     字符串函数

字符串函数用于对字符和二进制字符串进行各种操作,它们返回对字符数据进行操作时通常所需要的值。在 SuperMap SQL 查询中,可以直接在结果表包含的文本字段前使用这些函数,如去掉字符前后的空格,可以嵌套使用RTRIMLTRIM函数,字符串函数说明如表 2.4所示。

2.4 字符串函数说明列表

字符串函数

含义

举例

Ascii

得到字符表达式最左端字符的 ASCII 代码值。

格式:ASCIIcharacter_expression)。character_expression为文本类型字段组成的表达式。

Ascii ( Substring (string, position, 1 ) )

Char

int型表达式的值由ASCII代码转换为字符型的字符串。

格式:Charinteger_expression)。integer_expression0255之间整数表达式,如果整数表达式不在此范围内,将返回 NULL 值。

Char ( Ascii ( Substring (string, 1, 1 ) ) )

InStr

返回字符串中指定表达式的起始位置。

格式:InSt([start_location],expr1,expr2)。start_location 是在expr1中搜索expr2时的起始字符位置;expr1为一个字符串型表达式,其中包含要寻找的字符;expr2为一个字段串型表达式,标识要搜索的指定序列。起始字符位置不进行设置时,默认从第一个字符开始搜索。

InStr(1,Countries.CAPITAL,"")InStr(Countries.CAPITAL,"")

Left

返回从字符串左边开始指定个数的字符。

格式:Leftchar_expression integer_expression)。char_expression 一般为字符型字段;integer_expression是正整数,如果为负,则返回空字符串。

Left ( title, 5 )

Length

返回给定字符串表达式的长度(通常为字符个数),其中不包含尾随空格。

格式:Lengthstring_expression)。string_expression 为要计算的字符串表达式。

Length ( CustomName )

Lower

将大写字符数据转换为小写字符数据后返回字符表达式。

格式:Lowercharacter_expression)。character_expression 是字符类型表达式。

Lower ( CustomName )

Ltrim

删除指定字符串表达式的起始空格,返回无起始空格的字符串。

格式:Ltrimcharacter_expression)。character_expression 是字符类型表达式

Ltrim ( string_to_trim )

Replace

用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。

格式:Replace'string_expr1' , 'string_expr2' , 'string_expr3')。string_expr1是待搜索的字符串表达式;string_expr2是待查找的字符串表达式;string_expr3是替换用的字符串表达式。

Replace(Countries.CAPITAL,"","")

Reverse

返回字符表达式的反转。

格式:Reversecharacter_expression)。character_expression 是由字符数据组成的表达式。

Reverse ( fname )

Right

返回字符串中从右边开始指定个数的字符。

格式:Rightchar_expression integer_expression)。char_expression是由字符数据组成的表达式;integer_expression 是起始位置,用正整数表示,如果是负数,则返回一个错误。

Right ( fname, 5 )

Rtrim

去除字符型表达式的所有尾随空格,返回无尾随空格的字符串。

格式:Rtrimcharacter_expression)。character_expression是由字符数据组成的表达式。

Rtrim ( sname )

Soundex

返回由四个字符组成的代码 (SOUNDEX) 以评估两个字符串的相似性。

格式:Soundexcharacter_expression)。character_expression是字符数据的字母数字表达式。

Soundex ( word )

Space

返回由重复的空格组成的字符串。

格式:Spaceinteger_expression)。integer_expression是表示空格个数的正整数,如果为负,则返回空字符串。

sname + Space ( 2 ) + fname

Substr

返回文本字符表达式的一部分。

格式:Substrexpression, start, length)。expression 是字符串类型的不包含聚合函数的表达式;start 是一个整数,指定子串的开始位置;length是一个整数,指定子串的长度(要返回的字符数或字节数)。

Substr ( string, position, 1 )

Unicode

按照 Unicode 标准的定义,返回输入表达式的第一个字符的整数值。

格式:Unicode'ncharacter_expression')。

Unicode ( string ) as Unicode

Upper

返回将小写字符数据转换为大写的字符表达式。

格式:Uppercharacter_expression)。character_expression是由字符数据组成的表达式。

Upper ( Rtrim ( au_lname ) )

2.5     时间日期函数说明

日期函数用来显示关于日期的信息。这些函数适用于日期类型字段值,并对这些值执行算术运算。可将日期函数用于可使用表达式的任何地方,时间日期函数说明如表 2.5所示,其中 datepart 的参数设置说明见表 2.6

2.5 时间日期函数说明列表

日期函数

含义

举例

DateAdd

在给指定日期加上一段时间的基础上,得到新的日期值,适用于日期型字段构成的表达式。

格式:DateAdddatepart, number, date)。datepart为指定向日期哪一部分返回新值

 

2.6umber用来增加datepart的值;date为日期型字段构成的表达式。

DateAdd ( “m”, 6, StartDate ) as EndDate

DateDiff

返回跨两个指定日期的日期和时间边界数。

格式:DateDiffdatepartstartdateenddate)。datepart指定对日期哪一部分进行差值计算;startdate是开始日期;enddate是终止日期。如果开始日期(如1990年)早于终止日期(如1994年),则结果为正,否则为负。

Start, End, DateDiff ( “m”, Start, End ) as DiffMonth
End, DateDiff ( “d”, “2002-01-01”, End )
Start, DateDiff ( “y”, Start, “2010-01-01” )

DatePart

返回指定日期的指定部分的整数。

格式:DatePartdatepartdate)。datepart 是指定应返回的日期部分的参数;date为日期型字段构成的表达式。

DatePart ( "d", Date ) as Day
DatePart ( "m", Date ) as Month

Day

返回指定日期的天的日期部分的整数,等价于 DatePart“d”date)。

格式:Daydate)。date为日期型字段构成的表达式。

Day ( Date ) as Day

GetDate

SQL标准格式返回当前系统的日期和时间日期函数。可用在选择浏览字段或用在查询条件子句中,函数输入为空。

GetDate ( )

GetUtcDate

返回表示当前 UTC 时间(世界时间坐标或格林尼治标准时间)的日期值。当前的 UTC 时间得自当前的本地时间和运行 SQL Server 的计算机操作系统中的时区设置。函数输入为空。

GetUtcDate ( )

Month

返回指定日期月份的整数。等价于 DatePart“m”, date)。

格式:Monthdate)。date 为日期型字段构成的表达式。

Month ( Date ) as Month

Year

返回指定日期中的年份的整数。等价于 DatePart“y”, date)。

格式:Year(date)。date 为日期型字段构成的表达式。

Year ( Date ) as Year

 

2.6 datepart参数设置

设置

说明

yyyy

q

季度

m

y

某年的某一天

d

w

工作日

ww

h

n

s

 


  版权所有© 北京超图软件股份有限公司。保留所有权利。