kingbaseV7-伪列-函数-表达式

本文介绍了KingbaseV7数据库中的伪列,如ROWNUM、层次查询伪列(LEVEL、CONNECT_BY_ISLEAF、CONNECT_BY_ISCYCLE),以及各种数据库函数,包括聚集函数、数学函数和字符串函数,详细讲解了它们的用法和在查询中的作用。
摘要由CSDN通过智能技术生成

kingbaseV7-伪列-函数-表达式-08
4. 伪列
     伪列的行为与普通的列十分相似,但是伪列的值并不是和表存储在一起的。
你可以使用 SELECT 来选择伪列,但是你不能对伪列进行任何的修改

4.1. ROWNUM 伪列
    ROWNUM 伪列返回一个数值指示该条记录在 KingbaseES 从表取得或连接产生时的顺序。
第一条被选择的记录的 ROWNUM 值是1,第二条的值是2,以此类推。
可以使用 ROWNUM 来限制查询返回的记录数量。

4.2. 层次查询伪列
    层次查询伪列只能用在层次查询中,对层次查询返回的元组的某些属性进行说明
4.2.1. LEVEL 伪列
    层次查询返回的数据具有层次关系,LEVEL代表当前元组的所在的层。
如果当前元组的伪列LEVEL值是1,则代表这条元组在第一层且是根元组(root);2代表当前元组在第二层且是根元组的子元组,依次类推。
LEVEL 用在CONNECT BY子句中可以控制递归深度
4.2.2. CONNECT_BY_ISLEAF 伪列
    在层次查询中,如果当前元组没有子元组时,这个元组就被认为是一个叶节点。
一个叶节点的CONNECT_BY_ISLEAF为1,否则为0。元组的CONNECT_BY_ISLEAF伪列能够指出给定元组是否能够被继续展开返回更多层次关系。

4.2.3. CONNECT_BY_ISCYCLE 伪列
    要使用这个伪列必须指定NOCYLE关键字。
如果一个元组的CONNECT_BY_ISCYCLE值是1,则代表这个元组有子元组,
并且这个子元组又是它的祖先元组,即数据库中的数据成环;否则为0。
NOCYCLE关键字可以让KingbaseES在存在环的情况下也能返回记录,
如果不指定这个关键字,且层次关系中存在环,则会报错

5. 函数
5.1. 函数概述
    函数,是根据进去的信息(输入)和产生的东西(输出结果)所定义的一个黑盒。
    函数的形式通常如下:
    values = function_name(argument1, argument2,  …… ,argumentN)    
    结果值 = 函数名(参数1,参数2, …… ,参数N) 
KingbaseES数据库函数形式约定
    示例:TRIM([LEADING | TRAILING | BOTH] [string] FROM string)
说明:
括号内的方括号"["和"]"所括住的内容表示可选项,如使用此函数时,方括号中的 LEADING等是可选可不选的内容。
大写部分表示要原样出现在函数里,如FROM不可省略。
"string"这样的内容表示其位置是参数部分,"string"只是给出参数的类型。
如果参数是以"expr"形式给出,则表示参数可以是一个常量值,也可以是一个可计算求得结果值的表达式或字段名。

系统函数,可分为如下的几类:
聚集函数
    聚集函数计算一组输入值,得出一个结果值,函数名表明计算方式。
数学函数
    数学函数计算一组数值型输入值,得出一个数值型结果值,函数名给出计算方式。(少数函数没有初始的输入参数)
字符串函数
    以一序列的字符作为操作对象。
日期和时间函数
    用于日期和时间获取, 日期和时间运算等操作的函数集。
转换函数
    类型转换函数,通常又称格式化函数,用于把各种数据类型(日期/时间,INTEGER,FLOAT,NUMERIC等)
转换成格式化的字符串, 以及反过来从格式化的字符串转换成指定的数据类型。这些函数都遵循一个公共的调用习惯:
第一个参数是待格式化的值,第二个参数是一个定义输出格式的模板。
数组函数
    数组函数主要是指参数是数组类型,完成数组相关的一些功能,如计算数组的长度,用指定值初始化数组,计算数组维数等的函数集。
全文检索函数
    全文检索函数主要是指全文检索功能使用的函数。
其它函数
    系统还提供了一些其它用途的函数。分别为:二进制字串函数、序列操作函数、条件表达式、安全函数、系统信息函数、加密函数、和层次查询函数

5.2. 聚集函数
    聚集函数,计算一组输入值,得出一个结果值,其函数名表明计算方式。
聚集函数通常在选择语句(SELECT语句)中与选择语句的子句"GROUP BY"或 "HAVING"联合使用。
聚集通常以行为单位,数行某字段的值经聚集函数计算,得出一个结果值;
5.2.1. AVG
语法格式:
AVG([ DISTINCT | ALL ] expr )
功能:
计算所有输入值的均值(算术平均值)

5.2.2. COUNT
语法格式:
COUNT([[ DISTINCT | ALL ] expr] | *)
功能:
    计数。
参数说明:
expr是参与表里面对应的某字段名。
DISTINCT:计算时去掉重复值,并且不包括字段值为NULL的。
ALL:计算时包括不为空的重复值,缺省值为ALL。
*:计算表中所有的记录个数,包括重复行和空值。
返回值说明:
返回值的数据类型为BIGINT。
5.2.3. MAX
语法格式:
MAX([ DISTINCT | ALL ] expr)
功能:
求最大值,不考虑空值(字段值为NULL的)。
5.2.4. MIN
功能:
求最小值,不考虑空值(字段值为NULL的)。
5.2.5. STDDEV
功能:
输入值的标准采样偏差。
返回值说明:
如果参数是浮点数,返回值的数据类型是DOUBLE PRECISION,否则是NUMERIC。
5.2.6. SUM
功能:
求和,略去空值(字段值为NULL的)。
5.2.7. VARIANCE
功能:
输出值的采样方差(标准采样偏差的平方)。

5.3. 窗口函数
   窗口函数在和当前行相关的一组表行上执行计算
5.3.1. ROW_NUMBER
语法格式:
ROW_NUMBER()
功能:
计算在其分区中的当前行号,从1计。
5.3.2. RANK
语法格式:
RANK()
功能:
有间隔的当前行排名。
5.3.3. DENSE_RANK
功能:
没有间隔的当前行排名。
5.3.4. PERCENT_RANK
功能:
当前行的相对排名: (rank - 1) / (总行数 - 1)。
5.3.5. CUME_DIST
功能:
计算当前行的相对排名:(前面的行数或与当前行相同的行数)/(总行数)。
5.3.6. NTILE
语法格式:
NTILE(num_buckets INT)
功能:
从1到参数值的整数范围,尽可能相等的划分分区。
参数说明:
将结果集分为参数num_buckets指定的组数。
5.3.7. LAG
语法格式:
LAG(value ANY [, offset INT [, default ANY ]])
功能:
计算分区当前行的前 offset 行,返回value。如果没有这样的行,返回 default 替代。
参数说明:
offset 和 default 都是当前行计算的结果。如果忽略了,则 offset 默认是1,default 默认是 null。
5.3.8. LEAD
功能:
计算分区当前行的后 offset 行,返回value。如果没有这样的行,返回 default 替代。
5.3.9. FIRST_VALUE
功能:
返回窗口第一行的value值。
5.3.10. LAST_VALUE
功能:
返回窗口最后一行的value值。
5.3.11. NTH_VALUE
功能:
返回窗口第nth行的 value值(行从1计数);没有这样的行则返回 null。

5.4. 数学函数
    数学函数,计算一组数值型输入值,得出一个数值型结果值,函数名给出计算方式(少数函数没有输入参数)。
ABS  计算数的绝对值。
ACOS/ASIN   计算反余弦/计算反正弦
ATAN         计算反正切
CBRT      计算立方根
CEIL/CEILING    计算不小于参数的最小整数
COS/COT/SIN/TAN       计算余弦/计算余切/计算正弦/计算正切
DEGREES/RADIANS      将弧度转换为角度/把角度转换为弧度
EXP         计算自然指数
FLOOR      计算不大于参数的最大整数
LN       计算自然对数(以e为底的对数)。
LOG  语法格式:
LOG(expr)
LOG(x NUMERIC, y NUMERIC)
DLOG10(expr)
功能:
LOG(expr)用来计算以10为底的对数。
LOG(x, y)用来计算以x为底,y的对数。
DLOG10(expr)用来计算以10为底的对数。
参数说明:
LOG(expr)的参数expr为SQL允许的数值表达式。
LOG(x, y)的参数x, y为SQL允许的数值表达式。
DLOG10(expr)的参数expr为SQL允许的数值表达式。
返回值说明:
LOG(expr)根据输入的数据类型不同,返回数据类型为DOUBLE或NUMERIC。
LOG(x, y)返回数据类型为NUMERIC。
DLOG10(expr)根据输入的数据类型不同,返回数据类型为DOUBLE或NUMERIC。
MOD      计算除法x/y的余数(模)。
PI       计算圆周率常量
POWER    计算e的n次幂
RANDOM    计算0.0到1.0之间的随机数
SETSEED   为随后的RANDOM()调用设置种子
SIGN     返回参数的符号(-1, 0, +1)。
SQRT    计算平方根
TRUNC
语法格式:
TRUNC(x NUMERIC [, y INTEGER])
TRUNC(x DATETIME [, y TEXT])
    参数为 NUMERIC 类型的 TRUNC 函数的功能是去掉 y 所指定位置之后的所有数,保留 y 所指定位置(包括指定位置)之前的部分。
    参数为 TIMESTAMP/DATETIME 类型的 TRUNC 函数的功能是根据格式串 y 来截断日期 x。

5.5. 字符串函数
    把一序列的字符串作为操作对象
ASCII   返回参数部分的第一个字符的 ASCII 码
BIT_LENGTH    计算字符串的二进制长度
BTRIM     从expr1开头和结尾删除expr2里(缺省是空白)的字符
CHAR_LENGTH   求字符串的字符长度
CHARACTER_LENGTH   求字符串的长度,等效于 CHAR_LENGTH(TEXT) 函数
CHR      返回给出ASCII码的字符
CONCAT    把字符串expr1和字符串expr2进行连接,得到连接后的字符串。
CONVERT  把字符串转换为 expr3 中声明的编码。原来的编码是用 expr2 声明的。如果省略了 expr2, 则假设为数据库编码
DECODING   按照 expr2 中指定的类型解码
DIFFERENCE  以整数返回两个字符表达式的SOUNDEX值之差
ENCODE     把二进制数据编码为只包含ASCII形式的数据
INITCAP    将每个单词的首字母转换为大写字母
INSTR    在父字符串 expr1 中的第 expr3 个位置(从1开始)以字符为单位开始查找第 expr4 次出现的子字符串 expr2
INSTRB  在父字符串expr1中的第expr3个位置(从1开始)以字节为单位开始查找第expr4次出现的子字符串expr2。
如果expr3为负,则从expr1的倒数第expr3个位置开始查找。
LEFT   取子字符串,取父字符串 expr1(第一个参数)中的最左边的 expr2(第二个参数)个字符
LENGTH   求字符串的长度,等效于CHAR_LENGTH(TEXT)函数
LOWER   将字符串中的大写字母转换为小写字母
LPAD   用第三个参数给定的字符串从左边填充第一个参数直到第二个参数指定的长度为止
LTRIM   将字符串(expr1第一个参数)最左边出现在指定字符集合(expr2第二个参数)的删除掉。在第二个参数缺省时,删除字符串左部开头的空格
MD5  计算给出expr的MD5散列,以十六进制串的形式返回结果
OCTET_LENGTH   求字符串的字节长度
OVERLAY   替换子字符串
POSITION   求字符串(expr1)在字符串(expr2)中的起始位置
QUOTE_IDENT   返回字符串的适用于在SQL语句字符串里使用的形式。嵌入的引号被写了双份
REPEAT    重复TEXT(expr1)指定次数(expr2)。
REPLACE  字符串expr1中若存在子串expr2,则将子串expr2替换为expr3;否则返回expr1
REPLICATE  以expr2次重复字符串或位串expr1
RIGHT  取子字符串,取父字符串 expr1(第一个参数)中的最右边的 expr2(第二个参数)个字符
RPAD  用字符串 expr3(第三个参数)将字符串 expr1(第一个参数)从右边填充到指定的长度 expr2(第二个参数),在第三个参数缺省时,填充空格
RTRIM  将字符串(expr1第一个参数)尾部出现在指定字符集合(expr2第二个参数)的删除掉。在第二个参数缺省时,删除字符串尾部的空格
SOUNDEX   将字符串转换成由四个字符组成的代码,以查找相似的词或名称
STRPOS  求字符串(expr2)在字符串(expr1)中的位置,如果expr2不是expr1的子串,则返回结果值为0,等效于POSITION函数。
UPPER  将字符串中的小写字母转换为大写字母。
STRING_AGG   输入值连接成为一个字符串,用分隔符分开
WM_CONCAT   以分隔符连接列的值,进行字段合并

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值