5.6. 日期和时间函数
日期和时间函数是用于日期和时间获取,日期和时间运算等操作的函数集。
AGE 参数 expr1 减去参数 expr2,生成一个两个日期/时间的间隔值
CLOCK_TIMESTAMP 返回当前的日期和时间
CURRENT_DATE 得到事务开始时的日期(机器时间)。
CURRENT_TIME
CURRENT_TIMESTAMP 得到当前事务开始时系统的日期和时间(机器时间)
DATEADD 日期加法
DATEDIFF 两日期差距
DATEPART/EXTRACT 取日期时间中的某部分,第一个参数指定要取的部分。
DATE_TRUNC 截取日期成指定的精度(精度由第一个参数指定)。
DATE_FORMAT 根据 expr2 格式化 expr1 的值。
ISFINITE 测试指定时间是否为有效时间
LOCALTIME/LOCALTIMESTAMP 得到当前事务开始时系统的时间(机器时间)。
NOW 返回当前事务开始的日期和时间,等效于CURRENT_TIMESTAMP。
STATEMENT_TIMESTAMP 返回当前(批处理)语句开始执行的日期和时间
STR_VALID 判断所给定的表达式是否为正确的日期时间
SYSDATE 得到事务开始时系统的日期。
SYSTIMESTAMP
TIMEOFDAY 返回当前的高精度日期和时间。
TRANSACTION_TIMESTAMP 返回当前事务开始的日期和时间。
ADD_MONTHS 返回expr1加上expr2个月的日期时间值。
NEXT_DAY 返回expr1日期后的第一个由参数expr2命名的日期,参数expr2的值必须在周一到周日范围中,可以是全称或简称
LAST_DAY 返回expr1所在月份中的最后一天的日期。
DATETIME_ADD_MONTHS 返回expr1加上expr2个月的日期时间值。
DATETIME_NEXT_DAY 返回expr1日期时间后的第一个由参数expr2命名的日期,参数expr2的值必须在周一到周日范围中,可以是全称或简称
DATETIME_LAST_DAY 返回expr1所在月份中的最后一天的日期。
5.7. 数组函数
5.7.1. UNNEST
功能:
将输入的数组转换成一组行数据输出,数组的每个元素作为一行;
如果是多维数组,先将多维数组转换成一维数组,然后在转换成行输出。
ARRAY_FILL 通过指定的值,初始化指定维数的数组的指定个元素
ARRAY_NDIMS 返回指定数组的维数。
ARRAY_LENGTH 返回指定数组的指定维数的长度。
ARRAY_AGG 输入值,包括空,连接到一个数组。
5.8. 类型转换函数
类型转换函数,通常又称格式化函数,用于把各种数据类型(日期/时间,INTEGER,FLOAT,NUMERIC等
转换成格式化的字符串,以及反过来从格式化的字符串转换成指定的数据类型
CAST 把源数据转换为目标类型的数据。
TREAT 把源数据转换为目标类型的数据。
TO_CHAR 根据 expr1 的类型和 expr2 的模板结构,将 expr1 转换为字符串。
TO_DATE 把字符串转换成DATE型。
TO_TIMESTAMP 把字符串转换成 TIMESTAMP WITHOUT TIME ZONE 型。
TO_TIMESTAMP_TZ 把字符串转换成 TIEMSTAMP WITH TIME ZONE 型。
TO_NUMBER 把字符串转换成数值型。
CONTAINS
依据参数expr3所给出的全文检索的配置信息,以参数expr2为查询条件在参数expr1中进行匹配查找,
如果找到则返回true,否则返回false
5.9. 全文检索函数
to_tsvector
将文档转化为tsvector类型,它首先将原文文档的单词解析为单个的记号(token),
然后将这些记号(token)处理成若干个词(lexeme),最终返回tsvector类型的数据。
length 返回在tsvector中的词(lexeme)的个数。
setweight 给tsvector中每个词指定权重。
ts_strip 去掉expr中的位置与权重信息。
to_tsquery 将一个文本查询转化为tsquery类型。
plainto_tsquery 将一个非tsquery格式的查询转化成数据格式为tsquery类型
numnode 返回在tsquery中的结点数
querytree 返回tsquery中可以用作全文检索条件的内容。
ts_rank 返回一个指定查询条件在各文档中的出现次数的排名。
ts_headline 返回文档中的一段摘要,并且在这段摘要中高亮显示查询条件中的单词。
ts_rewrite 修改expr1类型的查询,使用给定串expr3来代替串expr1中的子串expr2。
get_current_ts_config 得到当前缺省的全文检索的配置文件类型。
contains 依据参数expr3所给出的全文检索的配置信息,以参数expr2为查询条件在参数expr1中进行匹配查找
ts_stat 用于查看文档中每个词条的统计情况
5.10.1. 二进制字串函数
GET_BIT 从字串中抽取位。
GET_BYTE 从字串中抽取字节
SET_BIT 设置字串中的位
SET_BYTE 设置字串中的字节。
EMPTY_BLOB 产生一个空的BLOB对象。
EMPTY_CLOB 产生一个空的CLOB对象。
5.10.2. 序列操作函数
NLSSORT 按照特定语言的要求进行排序。此函数与Oracle相兼容。
CURRVAL 返回序列的当前数值。
NEXTVAL 递增序列并返回新值
SETVAL 设置序列的当前数值以及 is_called 标志。
LASTVAL 返回当前会话上次使用的序列的当前值
INCREMENTVAL 返回指定序列的步长。
SEEDVAL 返回指定序列的开始值。
5.10.3. 条件表达式
CASE
语法格式:
CASE WHEN < Condition > THEN < Result >
[ WHEN ... ]
[ ELSE < Result > ]
END
功能:
类似于编程语言中的if-then-else结构,CASE是SQL中的条件表达式。
CASE可以用于任何可以出现表达式的地方。
DECODE
语法格式:DECODE (Expression, Search, Result [, Search, Result, ...])
比较表达式 Expression 和搜索字 Search,如果匹配,返回该 Search 对应的 Result;
如果不匹配,返回 Default 值;如果未定义 Default 值,则返回空值。
COALESCE 返回参数中第一个不是NULL的值。如果所有参数的值都是NULL,则返回NULL
ISNULL 当expr1为NULL时,用expr2代替本函数式的值;否则本函数的值保持expr1的原值。
ISNUMERIC 判断expr1是否是有效数值类型。
IF
语法格式:
IF(expr1 INT兼容类型, expr2 任意类型, expr3 任意类型)
功能:
如果expr1 不为 NULL并且expr1不等于0,返回expr2作为结果,否则返回expr3。
NULLIF 如果Value1的值和Value2的值相等,则返回NULL。否则返回Value1。
NVL 当 expr1 为 NULL 时,用 expr2 代替本表达式的值;否则本函数的值保持 expr1 的原值。
GREATEST 返回数值型列表中的最大值
LEAST 返回数值型列表中的最小值
安全函数
HAS_DATABASE_PRIVILEGE 用户是否有数据库的相关权限。
HAS_FUNCTION_PRIVILEGE 用户是否有函数的相关权限。
HAS_SCHEMA_PRIVILEGE 用户是否有模式的相关权限。
5.10.5. 系统信息函数
COL_DESCRIPTION 返回表中指定列的注释信息
table_oid是指定表的OID,该数值存储在系统表SYS_CLASS中
CONNECTIONS 返回数据库服务器当前的用户连接数。
CURRENT_DATABASE 得到目前执行环境下的数据库名。
CURRENT_ROLE 得到目前执行环境下的角色名
CURRENT_SCHEMA 得到目前执行环境下的模式名
CURRENT_SCHEMAS 系统搜索路径中的所有模式名。
CURRENT_SETTING 返回该项参数的当前设置值。
CURRENT_USER 得到目前执行环境下的用户名。
GETDATABASEENCODING 返回当前连接数据库使用的编码。
GETUSERNAME 得到目前执行环境下的用户名,等同于函数 CURRENT_USER
OBJ_DESCRIPTION 返回除数据库和角色之外的其他对象的注释信息
SESSION_ID 返回当前会话的ID
SESSION_USER 得到目前执行环境下的会话用户名
SET_CONFIG 将参数setting_name设置为new_value并返回新值
SYS_BACKEND_PID 返回当前连接的PID
SYS_CLIENT_ENCODING 返回当前客户端编码名称。
UID 得到目前执行环境下的用户 ID
USER 得到目前执行环境下的用户名,等效于CURRENT_USER。
VERSION 查看KingbaseES的版本信息。
加密函数
ENCRYPT 实现数据加密功能
DECRYPT_TO_TEXT 实现数据解密功能。
DECRYPT_TO_BYTEA 实现数据解密功能
层次查询函数
SYS_CONNECT_BY_PATH
层次查询返回的结果集中,此函数返回从根元组到当前元组的路径,
这个路径是由char字符分隔的在各个元组上计算的Expression的值连接构成的
批量加载函数
批量加载函数用于快速加载数据
BULKLOAD 依照配置文件中指定的信息快速加载数据。
6. 表达式
6.1. 值表达式
值表达式(ScalarExpression)的结果是一个数值
值表达式中通常包含以下的元素:常量、列名、操作符、函数等。
6.2. 表达式列表
用括号将若干表达式括起来称为表达式列表(ExpressionList), 格式如下:
表达式列表: (<Expression> [, ...n])
6.3. 条件
条件表达式的计算结果是TRUE、FALSE或未知, 它是表达式与逻辑操作符的组合