函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
COUNT(*) | 数值 | 返回行数 | COUNT(*) | 100 |
COUNT(UNIQUE col) COUNT(DISTINCT col) |
数值 | 返回去重后的行数(忽略NULL行) | COUNT(UNIQUE col1) | 50 |
COUNT(col) | 数值 | 返回行数 | COUNT(col1) | 100 |
AVG(col/expr) | 数值 | 返回表达式或指定的列的数值平均值 | AVG(col1) | 64 |
AVG(UNIQUE col) AVG(DISTINCT col) |
数值 | 返回指定的列中唯一值的数值平均值 | AVG(UNIQUE col1) | 61 |
MAX(col/expr) | 数值 | 返回指定的列或表达式中的最大值 | MAX(col1) | 100 |
MIN(col/expr) | 数值 | 返回指定的列或表达式中的最小值 | MIN(col1) | 10 |
SUM(col/expr) | 数值 | 返回指定的列或表达式中的数值总和 | SUM(col1) | 5050 |
RANGE(col) | 数值 | 返回数值列表达式参数的值的范围 | RANGE(col1) | 99 |
STDEV(col) | 数值 | 计算数据集的标准差 | STDEV(col1) | 200 |
VARIANCE(col) | 数值 | 总体方差的估计值,即标准差的平方 | VARIANCE(col1) | 40000 |
示例:
表数据中有7行,内容如下:
ID | COL1 |
---|---|
1 | 2 |
2 | 2 |
3 | 2 |
4 | 3 |
5 | 3 |
6 | 4 |
7 | NULL |
函数对COL1字段的操作结果为:
函数 | 结果 | 函数 | 结果 |
---|---|---|---|
COUNT (*) | 7 | MAX | 4 |
COUNT (DISTINCT col1) | 3 | MAX(DISTINCT col1) | 4 |
COUNT (ALL col1) | 6 | MIN | 2 |
COUNT ( col1 ) | 6 | MIN(DISTINCT col1) | 2 |
AVG | 2.66666666666667 | RANGE | 2 |
AVG (DISTINCT col1) | 3.00000000000000 | SUM | 16 |
STDEV | 0.74535599249993 | SUM(DISTINCT col1) | 9 |
VARIANCE | 0.55555555555556 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
ABS(col/expr) | 数值 | 取绝对值 | ABS(-10) | 10 |
CEIL(col/expr) | 数值 | 返回大于或等于它的单个参数的最小整数 | CEIL(4.3) | 5 |
FLOOR(col/expr) | 数值 | 返回小于或等于它的单个参数的最大整数 | FLOOR(4.3) | 4 |
GREATEST(col/expr) | 数值 | 返回表达式的列表中的最大值 | GREATEST(col1, col2, …colN) | 100 |
LEAST(col/expr) | 数值 | 返回表达式的列表中的最小值 | LEAST(col1, col2, …colN) | 1 |
MOD(expr1,expr2) | 数值 | 取余数(模),即expr1%expr2 | MOD(5,2) | 1 |
POW(expr1,expr2) | 数值 | expr1的expr2次幂值 | POW(3,2) | 9 |
ROOT(expr1,expr2) | 数值 | expr1的开expr2次方根 | ROOT(9,2) | 3 |
SQRT(expr) | 数值 | 平方根,等于ROOT的expr2为2 | SQRT(9) | 3 |
ROUND(expr1,expr2) | 数值 日期 |
指定expr2精度的四舍五入 | ROUND(3.5,0) round(today,‘MONTH’) |
4 2020-05-01 |
TRUNC(expr1,expr2) | 数值 日期 |
指定expr2精度截断 | TRUNC(3.5,0) trunc(today,‘MONTH’) |
3 2020-05-01 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
CARDINALITY(collection_col) | 数值 | 返回集合列(SET、MULTISET、LIST)中元素的数目 | CARDINALITY(set_col) | 5 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
SQLCODE | 数值 | 将当前 SPL 例程已执行了的最近执行的(不论静态的还是动态的)SQL 语句的 sqlca.sqlcode 值返回到它的调用上下文。仅在游标的上下文中使用 SQLCODE |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
DBINFO(‘dbspace’, tblspace_num) | 文本 | 返回指定表partnum所在的dbspace空间名称 | dbinfo(‘dbspace’, 6291458) | datadbs01 |
DBINFO(‘sqlca.sqlerrd1’) | 数值 | 返回提供插入到表内的最后的 serial 值的单个整数 | DBINFO(‘sqlca.sqlerrd1’) | 1 |
DBINFO(‘sqlca.sqlerrd2’) | 数值 | 返回提供 SELECT、INSERT、DELETE、UPDATE、EXECUTE PROCEDURE 和 EXECUTE FUNCTION 语句处理了的行的数目的单个整数 | DBINFO(‘sqlca.sqlerrd2’) | 10 |
DBINFO(‘sessionid’) | 数值 | 返回当前会话ID | DBINFO(‘sessionid’) | 36 |
DBINFO(‘cdrsession’) | 布尔值 | 检测是否执行 INSERT、UPDATE 或 DELETE 语句作为复制的事务的一部分 | DBINFO(‘cdrsession’) | 0 |
DBINFO(‘dbname’) | 文本 | 返回当前会话使用的库名 | DBINFO(‘dbname’) | testdb |
DBINFO(‘dbhostname’) | 文本 | 返回数据库服务器的主机名称 | DBINFO(‘dbhostname’) | localhost |
DBINFO(‘version’, ‘server-type’) | 文本 | 数据库服务器的类型 | DBINFO(‘version’, ‘server-type’) | GBase Server Version |
DBINFO(‘version’, ‘major’) | 文本 | 当前数据库服务器版本的主要版本号 | DBINFO(‘version’, ‘major’) | 12 |
DBINFO(‘version’, ‘minor’) | 文本 | 当前数据库服务器版本的次要版本号 | DBINFO(‘version’, ‘minor’) | 10 |
DBINFO(‘version’, ‘os’) | 文本 | 在版本字符串内的操作系统标识符 | DBINFO(‘version’, ‘os’) | F |
DBINFO(‘version’, ‘level’) | 文本 | 当前数据库服务器版本的临时发布级别 | DBINFO(‘version’, ‘level’) | C1G1AEE |
DBINFO(‘version’, ‘full’) | 文本 | oninit -V 返回的完整的版本字符串 | DBINFO(‘version’, ‘full’) | GBase Server Version 12.10.FC4G1AEE |
DBINFO(‘serial8’) | 数值 | 返回提供插入到表内的最后的 serial8 值的单个整数 | DBINFO(‘serial8’) | 1 |
DBINFO(‘bigserial’) | 数值 | 返回提供插入到表内的最后的 bigserial 值的单个整数 | DBINFO(‘bigserial’) | 1 |
DBINFO(‘get_tz’) | 文本 | 回展示当前会话的时区的 $TZ 字符串 | DBINFO(‘get_tz’) | |
DBINFO(‘utc_current’) | 数值 | 展示在 1970-01-01 00:00:00+00:00 与当前 SQL 语句开始执行时刻之间已消耗了的秒数的整数值 | DBINFO(‘utc_current’) | 1588043111 |
DBINFO(‘utc_to_datetime’, expr) | 日期时间 | UTC 秒数返回到服务器会生成的 DATETIME 值 | DBINFO(‘utc_to_datetime’, 1588043111) | 2020-04-27 23:05:11 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
ENCRYPT_TDES(data [,password [, hint]]) | 文本 | 使用TDES加密,指定密码,提示信息 | ENCRYPT_TDES( “1234567890123456”, “simple password”) | |
ENCRYPT_AES(data [,password [, hint]]) | 文本 | 使用AES加密,指定密码,提示信息 | ENCRYPT_AES( “1234567890123456”, “simple password”) | |
DECRYPT_CHAR(encrypted_data [, password]) | 文本 | 解密 | DECRYPT_CHAR( ‘myHeIBAAAAAAAAAAOA’, ‘simple password’) | |
DECRYPT_BINARY(encrypted_data [, password]) | 文本 | 解密 | ||
GETHINT(encrypted_data) | 文本 | 获取提示信息 | gethint(‘myHeIBAAAAAAAAAAOA’) | |
MD5(data) | 文本 | MD5值 | md5(‘test’) | 098f6bcd4621d373cade4e832627b4f6 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
EXP(expr) | 数值 | 返回数值表达式的指数 | EXP(10) | 22026.46579481 |
LN(expr) | 数值 | 是 LOGN 函数的别名,返回数值参数的自然对数 | LN(10) | 2.302585092994 |
LOG10(expr) | 数值 | 返回以 10 为基数的对数 | LOG10(10) | 1.000000000000 |
LOGN(expr) | 数值 | 返回数值参数的自然对数 | LOGN(10) | 2.302585092994 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
NVL2(expr, result1, result2) | 当第一个参数不为 NULL 时,返回第二个参数。如果第一个参数为 NULL,则返回第三个参数 | nvl2(null::int,2,3) | 3 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
HEX(expr) | 16进制 | 返回整数表达式的十六进制编码 | hex(6291458) | 0x00600002 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
LENGTH(expr) LEN(expr) |
数值 | 返回指定表达式的字节长数(截断末尾空格) | length('abcd ') | 4 |
OCTET_LENGTH(expr) | 数值 | 返回字符列中的字节数,包括任何末尾的空格 | octet_length('abcd ') | 8 |
CHAR_LENGTH(expr) CHARACTER_LENGTH(expr) |
数值 | 返回在它的参数中的逻辑字符的数目 | CHAR_LENGTH(‘南大通用’) | 4 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
SIGN(expr) | 数值 | 如果参数小于零,则返回 -1。如果参数等于零,则返回 0。如果参数大于零,则返回 1。 |
函数 | 描述 | 示例 |
---|---|---|
FILETOBLOB(‘pathname’,‘file_destination’ [, ‘table’, ‘column’]) | 为存储在指定的操作系统文件中的数据创建 BLOB 值 | FILETOBLOB(‘C:\tmp\photos.xxx’, ‘client’, ‘candidate’, ‘cand_photo’) |
FILETOCLOB(‘pathname’,‘file_destination’ [, ‘table’, ‘column’]) | 为存储在操作系统文件中的数据值创建 CLOB | |
LOTOFILE(lobcol,‘pathname’,‘file_destination’) | 将智能大对象复制到操作系统文件 | LOTOFILE(blob_col, ‘C:\tmp\photo.gif!’, client) |
LOCOPY(lobcol [, ‘table’, ‘column’]) | 创建智能大对象的一个副本 | LOCOPY(resume, ‘candidate’, ‘resume’) |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
ADD_MONTHS(date/datetime, expr) | DATE DATETIME |
返回月份增加后的日期时间值 | ADD_MONTHS(today, -10) | 2019-07-08 今天2020-05-08 |
MONTHS_BETWEEN(date /datetime, date/datetime) | 数值 | 返回两个日期时间的月份差 | MONTHS_BETWEEN(MDY(5, 6,2020), MDY(5, 1, 2018)) | 24.1612903225806 |
DAY(date/datetime) | 数值 | 返回第几天 | DAY(today) | 8 今天2020-05-08 |
MONTH(date/datetime) | 数值 | 返回月份 | MONTH(today) | 5 今天2020-05-08 |
YEAR(date/datetime) | 数值 | 返回年份 | YEAR(today) | 2020 今天为2020-05-08 |
WEEKDAY(date/datetime) | 数值 | 返回当周几 | WEEKDAY(today) | 5 今天为2020-05-08周五, 周日返回为0 |
QUARTER(date/datetime) | 数值 | 返回季度值 | QUARTER(today) | 2 今天2020-05-08 |
DATE(date_string) | DATE | 返回字符串日期 | date(‘2020-05-08’) | 2020-05-08 |
TODAY | DATE | 返回当前日期的日期值 | TODAY | 2020-05-08 |
CURRENT [first TO last] | DATETIME | 返回当时日期的日期时间值 | CURRENT YEAR TO SECOND | 2020-05-08 21:22:09 |
SYSDATE [first TO last] | DATETIME | 返回当时日期的日期时间值 | SYSDATE YEAR TO SECOND | 2020-05-08 21:22:09 |
MDY(Month,Day,Year) | DATE | 返回指定的日期值 | MDY(5,8,2020) | 2020-05-08 |
DATETIME(date/datetime) first TO last | DATETIME | 返回表达式代表的日期时间值 | datetime(2020-05-08 20:10:50) year to second | 2020-05-08 20:10:50 |
INTERVAL(date/datetime) first TO last | INTERVAL | 返回表达式代表的间隔值 | interval(3 03:04:05) day to second | 3 03:04:05 |
EXTEND(date/datetime,[first TO last]) | DATETIME | 返回经过表达式调整的日期时间值 | extend(current year to second, hour to second) | 21:33:06 |
LAST_DAY(date/datetime) | DATE DATETIME |
返回指定月的最后一天的日期 | LAST_DAY(today) | 2020-05-31 |
NEXT_DAY(date/datetime, dayexpr) | DATE DATETIME |
返回指定日期的下一个dayexpr | next_day(today,‘FRI’) | 2020-05-15 今天2020-05-08周六 |
TO_CHAR(date/datetime, datetime_format) | 字符 | 返回格式化的字符串 | TO_CHAR(today, ‘yyyymmdd’) | 20200508 |
TO_DATE(expr, datetime_format) | DATETIME | 返回格式化的日期时间值 | TO_DATE(‘20200508’, ‘yyyymmdd’) | 2020-05-08 00:00:00 |
GBASE_TO_CHAR(date/ datetime, datetime_format) | 字符 | 返回格式化的字符串 | GBASE_TO_CHAR(today, ‘%Y-%m-%d’) | 2020-05-08 |
GBASE_TO_DATE(expr, datetime_format) | DATETIME | 返回格式化的日期时间值 | GBASE_TO_DATE(‘2020-05-08’, ‘%Y-%m-%d’) | 2020-05-08 00:00:00 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
TO_NUMBER (expr) | 数值 | 将表示数值值的数值或字符表达式转换为 DECIMAL 数据类型 | TO_NUMBER(‘RMB100.00’) | 100 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
COS(expr) | 数值 | 返回弧度表达式的余切 | COS(RADIANS(60)) | 0.5 |
COSH(expr) | 数值 | 返回所需要的参数的双曲余弦,在此,该参数是以弧度表示的角度 | COSH(RADIANS(60)) | 1.600286857702386 |
SIN(expr) | 数值 | 返回您指定作为它的弧度表达式参数的角的正弦 | SIN(RADIANS(60)) | 0.8660254037844386 |
SINH(expr) | 数值 | 返回参数的双曲正弦,在此,该参数是以弧度表示的角 | SINH(RADIANS(60)) | 1.2493670505239751 |
TAN(expr) | 数值 | 返回它的弧度表达式参数的正切的值 | TAN(RADIANS(60)) | 1.7320508075688767 |
TANH(expr) | 数值 | 返回参数的双曲正切,该参数是以弧度表示的角 | TANH(RADIANS(60)) | 0.7807144353592677 |
ACOS(expr) | 数值 | 返回数值表达式的反余弦 | ACOS(-0.73) | 2.3891182774264563 |
ACOSH(expr) | 数值 | 返回指定的数值输入的双曲反余弦 | ACOSH(1.73 | 1.1447644052982224 |
ASIN(expr) | 数值 | 返回数值表达式参数的反正弦 | ASIN(-0.73) | -0.8183219506315598 |
ASINH(expr) | 数值 | 返回指定的数值输入的反双曲正弦 | ASINH(-0.73) | -0.6770703319308357 |
ATAN(expr) | 数值 | 返回数值表达式的反正切 | ATAN(-0.73) | -0.6305777572149348 |
ATANH(expr) | 数值 | 返回指定的数值输入的反双曲正切 | ATANH(-0.73) | -0.928727364246725 |
ATAN2(expr1, expr2) | 数值 | 计算与 (x, y) 相关的极坐标 (r, q) 的角度分量 | ATAN2(4,5) | 0.6747409422235526 |
DEGRESS(expr) | 数值 | 将表示弧度数值的表达式或主变量的值转换为等同的角度值 | DEGREES(3.1415926535897931) | 180 |
RADIANS(expr) | 数值 | 将表示角度值的表达式或主变量转换为等同的弧度值 | RADIANS(180) | 3.1415926535897931 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
expr1 || expr2 | 字符 | 连接两个表达式,如果其中有一个表达式为NULL,返回NULL | ‘GB’ || ‘ase’ || ’ 8s’ | GBase 8s |
CONCAT(expr1, expr2) | 字符 | 连接两个表达式,仅允许两个表达式,如果其中有一个表达式为NULL,返回NULL | CONCAT(CONCAT(‘GB’,‘ase’),’ 8s’) | GBase 8s |
ASCII(char_expr) | 数值 | 返回指定字符的ASCII码值 | ASCII(‘G’) | 71 |
TRIM([[BOTH|TRAILING|LEADING]pad_char FROM] expr) | 字符 | 从字符串移除指定的开头或末尾的填充字符 | TRIM(’#’ from ‘###GBase 8s###’) | GBase 8s |
LTRIM(expr [, pad_char]) | 字符 | 从字符串移除指定的开头的填充字符 | LTRIM(’###GBase 8s###’,’#’) | GBase 8s### |
RTRIM(expr [, pad_char]) | 字符 | 从字符串移除指定的末尾的填充字符 | RTRIM(’###GBase 8s###’,’#’) | ###GBase 8s |
SPACE(expr) | 字符 | 填充expr个空格 | SPACE(4) | |
REVERSE(expr) | 字符 | 接受字符表达式作为它的参数,并返回同样长度的字符串,但颠倒每个逻辑字符的顺序位置 | REVERSE(‘南大通用’) | 用通大南 |
REPLACE(source_str, old_str [, new_str]) | 字符 | 以不同的字符new_str替换源字符串内指定的字符old_str | REPLACE(‘gbase 8s’, ‘gb’, ‘GB’) | GBase 8s |
LPAD(source_str, length [, pad_str]) | 字符 | 返回 source_string 的一个副本,左填充达到由 length 指定的总字符数 | LPAD(‘南大通用’, 7, ‘++’) | +++南大通用 |
RPAD(source_str, length [, pad_str]) | 字符 | 返回 source_string 的一个副本,右填充达到由 length 指定的总字符数 | RPAD(‘南大通用’, 7, ‘++’) | 南大通用+++ |
CHR(expr) | 字符 | 返回ASCII码值expr对应的字符 | CHR(71) | G |
WM_CONCAT(expr / col) | 字符 | 聚集函数,返回指定表达式或者字段的值拼接 | WM_CONCAT(col1) | 1,2,3,4 |
WM_CONCAT_TEXT(expr / col) | 字符 | 聚集函数,返回指定表达式或者字段的值拼接,返回字段为text | WM_CONCAT_TEXT(col1) | 1,2,3,4 |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
UPPER(expr) | 字符 | 返回其中的表达式中的每个小写字母字符都被对应的大写字母字符替换的字符串 | UPPER(‘gbase’) | GBASE |
LOWER(expr) | 字符 | 返回其中表达式中的每个大写字母字符都被对应的小写字母字符替换的字符串 | LOWER(‘GBase’) | gbase |
INITCAP(expr) | 字符 | 返回表达式的一个副本,其中表达式中每个词都以大写字母开头 | INITCAP(‘gbase’) | Gbase |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
CHARINDEX(substr, source_str [, start_position]) | 数值 | 搜索从源字符串内指定的或缺省的字符位置开始的位置。 | charindex(‘通’, ‘南大通用’) | 3 |
INSTR(source_str, substr [, start [, count]]) | 数值 | 从字符串搜索指定的子字符串,并基于子字符串出现的次数返回在那个字符串中子字符串终止出现处的字符位置 | INSTR(‘南大通用通通’,‘通’,3,3) | 6 |
LEFT(source_str, position) | 字符 | 从字符串参数返回由最左边 N 个字符组成的子字符串 | LEFT(‘南大通用通通’, 4) | 南大通用 |
RIGHT(source_str, position) | 字符 | 从字符串参数返回由最右边 N 个字符组成的子字符串 | RIGHT(‘南大通用通通’,4) | 通用通通 |
SUBSTR(source_str, start_position [, length]) | 字符 | 从字符串参数返回从start_position开始,length字符长度的子字符串 | SUBSTR(‘南大通用通通’, 3, 2) | 通用 |
SUBSTRB(source_str, start_position [, length]) | 字符 | 从字符串参数返回从start_position开始,length字节长度的子字符串 | SUBSTRB(‘南大通用通通’,7,6) | 通用 |
SUBSTRING(source_str FROM start_position [FOR length]) | 字符 | 从字符串参数返回从start_position开始,length字符长度的子字符串 | SUBSTRING(‘南大通用通通’ from 3 for 2) | 通用 |
SUBSTRING_INDEX(source_str, del, count) | 字符 | 搜索指定的定界符字符的字符串,并基于您指定作为该函数的参数的定界符的计数返回开头或收尾字符的子字符串 | SUBSTRING_INDEX(‘南大通用通通’, ‘通’, 2) | 南大通用 |
col[first, last] | 字符 | 返回字段col从first到last位置的子字符串 | tabname[1,3] | sys tabname字段值为systables |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
FORMAT_UNITS(‘number units’) | 字符 | 展示指定的 number 和展示存储单位的适当的格式标签的字符串 | FORMAT_UNITS(‘1025 KB’) | 1.00MB |
FORMAT_UNITS(‘number’,‘units’ [, precision]) | 字符 | 展示指定的 number 和展示存储单位的适当的格式标签的字符串 | FORMAT_UNITS(‘1025’,‘KB’, 4) | 1.001MB |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
bitand(A,B) | 数值 | 按位与操作,按二进制位进行"与"运算 | bitand(60,13) | 12,即为 0000 1100 |
bitor(A,B) | 数值 | 按位或运算符,按二进制位进行"或"运算 | bitor(60,13) | 61,即为 0011 1101 |
bitxor(A,B) | 数值 | 异或运算符,按二进制位进行"异或"运算 | bitxor(60,13) | 49,即为 0011 0001 |
bitnot(A) | 数值 | 取反运算符,按二进制位进行"取反"运算 | bitnot(60) | -61,即为 1100 0011,一个有符号二进制数的补码形式 |
bitandnot(A,B) | 数值 | 结果与BITAND(A,BITNOT(B))相同。按二进制位,B的二进制位为1时,对应的A的二进制位置0 | bitandnot(60,13) | 48,即为 0011 0000 |
函数/表达式 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
CAST(expr [::target_data_type] AS target_data_type) | 将表达式强制转型为另一数据类型 | CAST(today::INTEGER::DECIMAL AS MONEY(16,2)) | 43958 今天2020-05-08 | |
expr ::target_data_type | 将表达式强制转型为另一数据类型 | today::INTEGER::DECIMAL | 43958 今天2020-05-08 |
函数/表达式 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
CASE WHEN condition THEN expr1 ELSE expr2 END |
取决于表达式 | 通用的 CASE 表达式测试 WHEN 子句中为真的条件 | CASE WHEN a>=80 THEN '优’ WHEN a>=60 THEN '及’ ELSE '不及格’ END |
|
CASE condition WHEN expr1 THEN expr2 ELSE exprN END |
取决于表达式 | 线性的 CASE 表达式将跟在 CASE 关键字之后的表达式的值与 WHEN 子句中的表达式作比较 | CASE day WHEN 6 THEN ‘SAT’ WHEN 0 THEN ‘SUN’ ELSE 'WORKDAY’ END |
|
ISNULL(expr1, expr2) | 取决于表达式 | 如果expr1为NULL,返回expr2,否则返回expr1 | ISNULL(NULL::INT, ‘通用’) | 通用 |
NVL(expr1, expr2) | 取决于表达式 | 如果expr1为NULL,返回expr2,否则返回expr1 | NVL(NULL::INT, ‘通用’) | 通用 |
NVL2(expr, result1, result2) | 取决于表达式 | 当第一个参数不为 NULL 时,返回第二个参数。如果第一个参数为 NULL,则返回第三个参数 | nvl2(null::int,2,3) | 3 |
NULLIF(expr1,expr2) | 取决于表达式 | 如果expr1与expr2相同,返回NULL;否则返回expr1 | NULLIF(null::INT, ‘通用’) | NULL |
DECODE(expr, when_expr, then_expr, else_expr) | 取决于表达式 | 类似于 CASE 表达式,依赖于在指定的列中找到的值 | DECODE(day,6, ‘SAT’,0, ‘SUN’, ‘WORKDAY’) |
函数/表达式 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
CURRENT | DATETIME | 从系统时钟返回当前的时间和日期 | CURRENT | 2020-05-09 17:00:43 |
CURRENT_ROLE | 字符 | 返回角色的名称(如果有的话),为当前用户启用其权限 | CURRENT_ROLE | |
CURRENT_USER USER |
字符 | 返回当前用户的登录名称(也称为授权标识符) | USER | gbasedbt |
DEFAULT_ROLE | 字符 | 回角色的名称(如果有的话),是当前用户的缺省角色。 | DEFAULT_ROLE | |
DBSERVERNAME SITENAME |
字符 | 返回当前数据库服务器的名称 | SITENAME | gbase01 |
SYSDATE | DATETIME | 从系统时钟读取 DATETIME 值,像 CURRENT 运算符一样,但有不同的缺省精度 | SYSDATE | 2020-05-09 17:01:59 |
TODAY | DATE | 从系统时钟返回当前的日历日期 | TODAY | 2020-05-09 |
函数/表达式 | 描述 | 示例 |
---|---|---|
ROW_NUMBER() / ROWNUMBER() OVER([window PARTITION clause] [window ORDER clause]) | 为单个查询的结果集中的每一行返回一序列的编号 | SELECT ROW_NUMBER() OVER(PARTITION BY pkg_type ORDER BY prod_name) AS rownum, prod_name, pkg_type FROM product; |
LAG(expr [offset [, default]]) OVER([window PARTITION clause] window ORDER clause) | SELECT name, salary, LAG(salary) OVER (PARTITION BY dept ORDER BY salary), LEAD(salary, 1, 0) OVER (PARTITION BY dept ORDER BY salary) FROM employee; |
|
LEAD(expr [offset [, default]])OVER([window PARTITION clause] window ORDER clause) | SELECT name, salary, LAG(salary) OVER (PARTITION BY dept ORDER BY salary), LEAD(salary, 1, 0) OVER (PARTITION BY dept ORDER BY salary) FROM employee; |
|
RANK()OVER([window PARTITION clause] window ORDER clause) | 为 OLAP window 中的每一行计算分等级的值 | SELECT emp_num, sales, RANK() OVER (ORDER BY sales) AS rank FROM sales; |
DENSERANK() / DENSE_RANK() OVER([window PARTITION clause] window ORDER clause) |
为 OLAP window 中的每一行计算等级值。返回值是一个顺序编号 | SELECT emp_num, sales, DENSE_RANK() OVER (ORDER BY sales) AS dense_rank FROM sales; |
PERCENT_RANK() OVER([window PARTITION clause] window ORDER clause) |
为 OLAP window 中的每一行计算等级值,规格化为从 0 至 1 的范围 | SELECT emp_num, sales, PERCENT_RANK() OVER (ORDER BY sales) AS per_rank FROM sales; |
CUME_DIST() OVER([window PARTITION clause] window ORDER clause) |
计算累计分布作为每一行的百分比等级。该等级表示为取值范围从 0 至 1 的实际值小数 | SELECT emp_num, sales, CUME_DIST() OVER (ORDER BY sales) AS cume_dist FROM sales; |
NTILE(unsigned) OVER([window PARTITION clause] window ORDER clause) |
将每一分区中的行划分成 N 等级的类别,称为片,每一类别包括大约相等的行数 | SELECT name, salary, NTILE(5) OVER (PARTITION BY dept ORDER BY salary) FROM employee; |
FIRST_VALUE(expr) OVER([window PARTITION clause] window ORDER clause) |
为每一 OLAP window 分区中的第一行返回指定的表达式的值 | SELECT price, price - FIRST_VALUE(price) OVER (PARTITION BY year ORDER BY tradingday) AS diff_price FROM stock_price WHERE tradingday between ‘2012-11-01’ and ‘2012-11-07’; |
LAST_VALUE(expr) OVER([window PARTITION clause] window ORDER clause) |
为每一 OLAP window 分区中的最后一行返回指定的表达式的值 | SELECT price, price - LAST_VALUE(price) OVER (PARTITION BY year ORDER BY tradingday) AS diff_price FROM stock_price WHERE tradingday between ‘2012-11-01’ and ‘2012-11-07’; |
RATIOTOREPORT(expr) / RATIO_TO_REPORT(expr) OVER([window PARTITION clause] [window ORDER clause]) |
基于该函数的数值参数,计算每一行对于该 window 分区中剩余行的分数比率 | SELECT city, SUM(dollars) AS SALES, RATIO_TO_REPORT(SUM(dollars)) OVER() *100 AS RATIO_DOLLARS FROM sales, store, period WHERE sales.store_id = store.store_id AND sales.period_id = period.period_id GROUP BY CITY ORDER BY SALES DESC; |
聚集函数(expr) OVER([window PARTITION clause] [window ORDER clause]) |
从查询的结果返回聚集结果的几个函数,诸如总和和平均值,还可用作来自 OLAP window 的上下文的 OLAP 函数 | SELECT customer_num, ship_date, ship_charge, COUNT(*) OVER (PARTITION BY customer_num) FROM orders WHERE customer_num <= 110; |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
GetHzFullPY(expr) | 字符 | 将汉字转换为全拼 | GetHzFullPY(‘南大通用’) | nandatongyong |
GetHzPYCAP(expr) | 字符 | 将汉字转换为拼音首字母 | GetHzPYCAP(‘南大通用’) | ndty |
GetHzFullPYsubstr(source_str, start_position [, length]) | 字符 | 函数将汉字转换为拼音后,提取指定个连续字符 | GetHzFullPYsubstr(‘南大通用’,6,4) | tong |
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
SYS_GUID() | 字符 | 生成并返回一个全球唯一标识 | SYS_GUID() | 2CDFC05B60854902A74281AC8D5D441E |
本文主要来源于《GBase 8s SQL指南:语法》的 数据类型与表达式 章节。