构建SQL查询的函数说明

使用说明

SQL查询通过构建查询函数,实现从已有的数据中查询出满足特定条件的数据,这里的条件是通过对数据集属性通过运算符和常用函数实现查询。构建查询语句的常用函数包括聚合函数、数学函数、字符函数及日期函数。对于不同引擎的数据源,不同函数的适用情况及函数用法有所不同,在此也给出SQL查询功能对不同引擎支持情况。

运算符号

运算符号用于构造 SQL 查询条件,包括常用的数学运算符、逻辑运算符和一些比较特殊的运算符。

运算符 含义 示例
算术运算符
加法 Dataset.RENT + Dataset.UTILITIES <= 800
- 减法 Dataset.POP_2019 - Dataset.POP_2010
* 乘法 Dataset.DENSITY * Dataset.AREA > 5000000
/ 除法 Dataset.VALUE / Dataset.POP = 50000
\ 取商 Dataset.VALUE \ Dataset.POP > 100
% 取模 Dataset.VALUE1 % Dataset.VALUE2
Mod 取模 Dataset.VALUE1 Mod Dataset.VALUE2
比较运算符
= 等于 Dataset.CODE = 100
> 大于 Dataset.POP_2002 > 5000000
< 小于 Dataset.INDUST_GROWTH < 0
>= 大于等于 Dataset.RENT + Dataset.UTILITIES >= 800
<= 小于等于 Dataset.RENT + Dataset.UTILITIES <= 800
<> 不等于 Dataset.VALUE <> 100
! 非,与“>”、“<”联合使用成!<(不小于)、!>(不大于) Dataset.VALUE !> 100
逻辑运算符
AND 连结两个布尔型表达式并当两个表达式都为 TRUE 时返回 TRUE Dataset.CODE = 100 AND Dataset.VALUE > 20000
NOT 对任何其它布尔运算符的值取反 NOT IsBACHELOR
OR 将两个条件结合起来,如果两个布尔表达式中的一个为 TRUE,那么就为 TRUE Dataset.SALES > 20000 OR Dataset.ORDERS > 20000
IN 如果操作数等于表达式列表中的一个,那么就为 TRUE Dataset.PROVINCE In ("GUANGDONG")
Between 确定一个表达式在某个范围之内,那么就为 TRUE。一般与 AND 同时使用 Dataset.SALES Between 4095 AND 20000
Like 确定给定的字符串完全与指定的模式匹配 Dataset.COUNTRY Like "CANADA"
其他
Is NULL 确定一个表达式是为 NULL,主要是文本型字段 Dataset.CONTINENT Is NULL
Is TRUE 确定一个表达式为 True,主要是布尔型字段 Dataset.Value < 0 Is TRUE
Is FALSE 确定一个表达式为 False,主要是布尔型字段 Dataset.Value > 0 Is FALSE
# 匹配任意单个数字字符。 Dataset.SmID like '1#3'
´ 用于字符型字段、日期型字段等的输入。 Dataset.COUNTRY like '*国'
ˆ 异或 Dataset.SmID ^ Dataset.COLOR_MAP >0
· 用于手动输入字段信息时使用。 Dataset.COUNTRY
* 匹配任意数量的字符。可以在字符串中的任意位置使用星号 (*)。 Dataset.COUNTRY like '*国'

聚合函数

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

表格:聚合函数

聚合函数 中文名称 含义 支持的引擎 示例
UDB/UDBX OraclePlus SQLPlus PostgreSQL DB2
Avg 平均值(均值) AVG(expression)返回在查询的指定字段(或表达式)中包含的一组值的算术平均值。空值将被忽略。 Avg(Dataset.POP_2014)
Count 计数 COUNT(expression)返回各组中的记录数。 Count(*)
Max 最大值 Max(expression)返回在查询的指定字段(或表达式)内所包含的一组值的最大值。 Max(Dataset.POP_2014)
Min 最小值 Min(expression)返回在查询的指定字段(或表达式)内所包含的一组值的最小值。 Min(Dataset.POP_2014)
Sum 求和(总和) Sum(expression)返回在查询的指定字段(或表达式)中所包含的一组值的总计。 Sum(Dataset.POP_2014)
Stdev 样本标准差(标准差) Stdev(expression)返回以查询的指定字段(或表达式)中包含的一组值作为总体样本抽样的标准偏差的估计值。对于 Orcale 数据源,其函数名称为 STDDEV。 √(Stddev) √(Stddev) Stdev(Dataset.POP_2014)
Stdevp 总体标准差 Stdevp(expression)返回以查询的指定字段(或表达式)中包含的一组值作为总体样本的标准偏差的估计值。 √(Stddev_pop) √(Stddev_pop) Stdevp(Dataset.POP_2014)
Var 样本方差(方差) Var(expression)返回以查询的指定字段(或表达式)中包含的一组值作为总体样本抽样的方差的估计值。对于 Orcale 数据源,其函数名称为 VARIANCE。 √(Variance) √(Variance)
Varp 总体方差 Varp(expression)返回以查询的指定字段(或表达式)中包含的一组值作为总体样本的方差的估计值。 √(Var_pop) √(Var_pop) Varp(Dataset.POP_2014)

数学函数

数学函数对数字表达式进行数学运算并返回运算结果。数学函数在 SuperMap 中的表达式一般采用属性表的字段名或其表达式,如 Cos(Slope)、Ceiling(Pop/Area)等。

数学函数 含义 支持的引擎 示例
UDB/UDBX OraclePlus SQLPlus PostgreSQL DB2
Abs 返回指定数字的绝对值,类型与指定数据类型相同。适用于短整型、长整型、单精度、双精度、货币等类型字段(或表达式)。 Abs(Dataset.Temperature)
Acos 返回以弧度表示的角度值,取值范围从-π到π,该角度值的余弦为给定的 float 表达式;本函数亦称反余弦。适用于单精度或双精度类型字段(或表达式),表达式的取值范围从-1到1,否则查询结果为空。 Acos(data)
Asin 返回以弧度表示的角度值,取值范围从-π到π,该角度值的正弦为给定的 float 表达式;本函数亦称反正弦。适用于单精度或双精度类型字段(或表达式),表达式的取值范围从-1到1,否则查询结果为空。 Asin(data)
Atan 返回以弧度表示的角度值,该角度值的正切为给定的 float 表达式;本函数亦称反正切。 Atan(data)
Ceiling 返回大于或等于所给数字表达式的最小整数。适用于短整型、长整型、单精度、双精度、货币等类型字段(或表达式)。对于 Oracle 数据源,其函数名称为 CEIL。 √(CEIL) Ceiling(data)
Cos 返回给定表达式中给定角度(以弧度为单位)的三角余弦值,类型为双精度。 Cos(Dataset.Radian)
cot 返回给定 float 表达式中指定角度(以弧度为单位)的三角余切值。 Cot(angle)
Degrees 当给出以弧度为单位的角度时,返回相应的以度数为单位的角度。 Degrees(angle)
Exp 返回所给的 float 表达式的以 e(约等于2.71828182845905)为底的指数值。 Exp(data)
Floor 返回小于或等于所给数学表达式的最大整数。 Floor(23.45),Floor(-123.45)
Log 返回所给数学表达式的自然对数,不适合 UDB 数据源使用;此外,对于 Oracle 数据源,函数格式为 Log(n,m),表示以 n 为底,m 的对数。 Log(Dataset.SmID),Log(n,m)
PI 返回 PI 的常量值,函数输入为空。 PI()*Dataset.SMID as Test
Power 返回给定表达式乘指定次方的值,第一个参数指定数值型字段(或表达式),第二个参数指定次方数。 Power(expression,2) as Area
Radians 对于在数字表达式中输入的度数值返回弧度值,并对弧度值进行了向下取整操作。 Radians(angle) as NewAngle
Rand 返回 0 到1 之间的随机 float 值,函数输入为空。 Rand()
Round 返回指定数值型字段(或表达式)的四舍五入到指定的小数位数的数字。第一个参数指定数值型字段(或表达式),第二个参数指定小数位数。如果没有指定小数位数时,默认四舍五入为最接近的整数。 Round(Dataset.SmArea,2),Round(Dataset.SmArea)
Sign 返回给定表达式的正负信息,包括正 (标记为+1)、零 (标记为0) 或负 (标记为-1) 号。 Sign(data)
Sin 返回给定角度(以弧度为单位)的三角正弦值,类型为双精度。 Sin(Dataset.COLOR_MAP)
Square 返回给定表达式的平方。 Square(Production)
Sqrt 返回给定表达式的平方根。 Sqrt(Production)
Tan 返回输入表达式的正切值。 Tan(Dataset.COLOR_MAP)

字符函数

字符串函数用于对字符和二进制字符串进行各种操作,它们返回对字符数据进行操作时通常所需要的值。

字符函数 含义 支持的引擎 示例
UDB/UDBX OraclePlus SQLPlus PostgreSQL DB2
Ascii 返回字符表达式最左端字符的 ASCII 代码值。不适合 UDB/UDBX 数据源使用。
格式:ASCII(character_expression)character_expression 为文本类型字段组成的表达式。
Ascii(String)
Char 将 int 型表达式的值由 ASCII 代码转换为字符型的字符串。对于 SDB 数据源,其函数名称为 Chr。
格式:Charinteger_expression) integer_expression 为0~255之间整数表达式。如果整数表达式不在此范围内,将返回 NULL 值。
√(Chr) √(Chr) √(Chr) Char(data)
InStr 返回字符串中指定表达式的起始位置。
格式:InSt([start_location],expr1,expr2)start_location 是在 expr1中搜索 expr2时的起始字符位置,expr1为一个字符串型表达式,其中包含要寻找的字符,expr2为一个字段串型表达式,标识要搜索的指定序列。起始字符位置不进行设置时,默认从第一个字符开始搜索。
InStr(1,Dataset.CAPITAL,"京"),InStr(Dataset.CAPITAL,"京")
Length 返回给定字符串表达式的长度(字符个数),空格计算在内。如果字段为空,则返回值为空。
格式:Length(string_expression) string_expression 为要计算的字符串表达式。对 SQL 数据源,函数为 Len(string_expression)。
√(Len) Lenth(Dataset.CAPITAL)
Lower 将大写字符数据转换为小写字符数据后返回字符表达式。
格式:Lower(character_expression) character_expression 是字符类型表达式。
Lower(Dataset.CAPITAL) as capital
Ltrim 删除指定字段串表达式的起始空格,返回无起始空格的字符串。
格式:Ltrim(character_expression) character_exprssion 是字符类型表达式。
Ltrim(Dataset.CAPITAL)
Replace 用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。
格式:Replace('string_expr1','string_expr2','string_expr3') string_expr1是待搜索的字符串表达式;string_expr2是待查找的字符串表达式;string_expr3是替换用的字符串表达式。
Replace(Dataset.CAPITAL,"尔","而")
Reverse 返回字符表达式的反转。对 Oracle 数据源查询时,如果数据类型为文本型,对中文字符不处理,如果数据类型为字符型,对中文字符处理后会出现乱码。
格式:Reverse(character_expression) character_expression 是由字符数据组成的表达式。
√(中文字符会乱码) Reverse(Dataset.CAPITAL) as NewName
Rtrim 去除字符型表达式的所有尾随空格,返回无尾随空格的字符串。
格式:Rtrim(character_expression) character_expression 是由字符数据组成的表达式。
Rtrim(Dataset.CAPITAL)
Soundex 返回由四个字符组成的代码 (SOUNDEX) 以评估两个字符串的相似性。
格式:Soundex(character_expression) character_expression 是字符数据的字母数字表达式。
Soundex(word)
Space 生成由指定个数的空格组成的字符串。如果指定个数为负值,则返回空字符串。 Dataset.COUNTRY+Space(3)+Dataset.CAPITAL as World_CAPITAL
Substr 返回文本字符表达式的一部分。
格式:Substr(expression, start, length)。expression 是字符串类型的不包含聚合函数的表达式;start 是一个整数,指定子串的开始位置;length是一个整数,指定子串的长度(要返回的字符数或字节数)。
√(文本类型不适用) √(或Substring) Substr ( string, position, 1 )
Unicode 按照 Unicode 标准的定义,返回输入表达式的第一个字符的整数值。
格式:Unicode('ncharacter_expression')。
Unicode(Dataset.CAPITAL) as Unicode
Upper 返回将小写字符数据转换为大写的字符表达式。
格式:Upper(character_expression) character_expression 是由字符数据组成的表达式。
Upper(Dataset.CAPITAL)

日期函数

日期函数用来查询关于日期的信息。这些函数适用于日期类型字段值,并对这些值执行算术运算。可将日期函数用于可使用表达式的任何地方。

日期函数 含义 支持的引擎 示例
UDB/UDBX OraclePlus SQLPlus PostgreSQL DB2
Day 返回指定日期天部分的整数,等价于 Datepart('d',data)。适用于 SQL 数据源的日期型字段(或表达式)。
格式:Day(date) date 为日期型字段(或表达式)。
Day(Dataset.GETDATE) as Day
GetDate 按 SQL 标准格式返回当前系统的日期和时间,函数输入为空。 GetDate()
GetUtcDate 返回表示当前 UTC 时间(格林尼治标准时间)的日期值,函数输入为空。当前的 UTC 时间得自当前的本地时间和运行 SQL Server 的计算机操作系统中的时区设置。 GetUtcDate()
Month 返回指定日期月份部分的整数,等价于 DatePart("m",date)。适用于 SQL 数据源的日期型字段(或表达式)。
格式:Month(date)date 为日期型字段(或表达式)。
Month(Dataset.GETDATE) as Month
Year 返回指定日期年份部分的整数。等价于 DatePartdate)。适用于 SQL 数据源的日期型字段(或表达式)。
格式:Year(date)date 为日期型字段(或表达式)。
Year(Dataset.GETDATE) as Year
to_date 当用户输入字符串型时间,并用此时间值构造查询条件时,需遵循一定的规则,此时需将时间值写到to_data()的括号中进行格式化。
格式:to_date(2018-5-11 14:28:00)。
Province_R.DataDate > to_date(2019-11-07 00:00:00)

表格:datepart 参数设置

设置 说明
yyyy
q 季度
m
y 某年的某一天
d
w 工作日
ww
h
n
s

相关主题