一、数据类型变化
1、KES->MySQL
bash
test=# select typname,typlen,typcategory from sys_type;
或者
test=# \dTS+
| 序号 | KES数据类型 | MySQL 数据类型 | 备注说明(KES) |
|---|---|---|---|
| 数值型 | |||
| 1 | tinyint | tinyint | 有符号整数,取值范围 -128 ~ +127 |
| 2 | smallint | smallint | 有符号整数,取值范围 -32768 ~ +32767 |
| 3 | mediumint/middleint/int3 | mediumint | 有符号整数,取值范围 - 8388608 ~ +8388607 |
| 4 | int/integer | int | 有符号整数,取值范围 -2147483648 ~ +2147483647 |
| 5 | bigint | bigint | 有符号整数,取值范围 - 9223372036854775808 ~ +9223372036854775807 |
| 6 | numeric(precision, scale) number(precision, scale) decimal(precision, scale) | decimal(m,d) dec(m,d) | 精确数据类型,存储 0 以及绝对值为 [1.0 x 10⁻¹³⁰ , 1.0 x 10¹²⁶) 的正、负定点数。精度 precision 取值范围 1~1000,标度 scale 取值范围 0~1000 |
| 7 | real/float4 | real(m,d) | 单精度浮点数,范围在 -1e+37 到 +1e+37 之间,精度至少是 6 位小数 |
| 8 | double precision (n)/float8 | double precision(m,d) | 双精度浮点数,范围在 -1e+37 到 +1e+37 之间,精度至少是 15 位小数 |
| 9 | float§ | float§ | p 取值为 1~24 时,单精度浮点数。当 p 取值为 25~53 时,双精度浮点数 |
| 10 | smallserial | smallint | 自动增加的小整数 1 到 32767 |
| 11 | serial | int | 自动增加的整数 1 到 2147483647 |
| 12 | bigserial | bigint | 自动增加的大整数 1 到 9223372036854775807 |
| 13 | money | decimal(m,d) | 存储固定小数精度的货币数值,小数的精度由数据库的 lc_monetary 设置决定 |
| 位串类型 | |||
| 1 | bit(n) | bit(m) | 定长位串 |
| 2 | bit varying(n) | varbinary(m) | 变长位串 |
| 3 | binary(n) | binary(m) | 定长二进制字符串,n 取值范围为 1-255 |
| 4 | varbinary(n) | varbinary(m) | 变长二进制字符串,n 取值范围为 1-65535 |
| 字符类型 | |||
| 1 | char n \[char |byte ) character(n \[char |byte) | char(n) | 定长字符串类型,最大长度是 10485760 个字节或者字符,n 缺省值为 1,如果显式指定了 char,则表示 n 个字符长度;如果显式指定 byte,则表示 n 个字节长度;如果没有显式指定,则以系统参数 nls_length_semantics 为准 |
| 2 | char varying(n\[char|byte)] varchar(n\[char|byte)] varchar2(n\[char|byte)] nvarchar2(n\[char|byte)] nvarchar(n\[char|byte)] | varchar(n) | 变长字符串类型,n 的取值范围 1~10485760。如果显式指定了 char,则表示 n 个字符长度;如果显式指定 byte,则表示 n 个字节长度;如果没有显式指定,则以系统参数 nls_length_semantics 为准 |
| 大对象类型 | |||
| 1 | clob | text | 文本字符类型,最大长度 1gb |
| 2 | nclob | text | 文本字符类型,最大长度 1gb |
| 3 | text | text | 文本字符类型,最大长度 1gb |
| 4 | tinytext | tinytext | 文本字符类型,最大长度 255 个字节 |
| 5 | mediumtext | mediumtext | 文本字符类型,最大长度 16777215 个字节 |
| 6 | longtext | longtext | 文本字符类型,最大长度 1gb |
| 7 | blob | blob | 二进制字符类型,最大长度 1gb |
| 8 | bytea | blob | 二进制字符类型,最大长度 1gb |
| 9 | tinyblob | tinyblob | 二进制字符类型,最大长度 255 个字节 |
| 10 | mediumblob | mediumblob | 二进制字符类型,最大长度 16777215 个字节 |
| 11 | longblob | longblob | 二进制字符类型,最大长度 1gb |
| 时间日期类型 | |||
| 1 | date | date | date 数据类型存储日期和时间值。每一个 date 日期值 kes 存储如下值:年、月、日、时、分、秒。 |
| 2 | time§, time§ without time zone | time(fsp) | 不带时区的时间值,在 mysql 模式下,time 值的范围可以从 '-838:59:59.000000' 到 '838:59:59.000000',默认精度为 0 |
| 3 | year | year | 年份值,year 类型只在 mysql 模式下可用,范围 '1901' 到 '2155' |
| 4 | datetime§ | datetime(fsp) | 时间日期值,仅在 mysql 模式下支持,是 date 和 time 的组合,表示某个时刻,通常以 'yyyy-mm-dd hh:mm:ss' 表示。 |
| 5 | timestamp§, timestamp§ with time zone, timestamp§ without time zone | timestamp(fsp) | 时间日期值,可指定是否带时区,p 取值范围为 0~6,在 mysql 模式下默认精度为 0。timestamp with time zone,内部存储的值默认是 utc 时区 |
| 6 | interval 'expr' opt_field | interval expr unit | 时间间隔 interval 类型,分为两组,年月和日时分秒。支持兼容 mysql 的域定义,更多信息参见 interval |
| 布尔类型 | |||
| 1 | boolean | bool, boolean | 布尔值,表示真、假的数据类型。1 字节存储。 |
| 空间数据类型 | |||
| 1 | geometry | geometry | 几何类型,存储坐标点信息 |
| 2 | point | point | 点坐标 |
| 3 | linestring | linestring | 线坐标 |
| 4 | polygon | polygon | 多边形 |
| json 类型 | |||
| 1 | json | json | 存储 json 数据 |
2、MySQL->KES
| 序号 | MySQL数据类型 | KES数据类型 | 备注说明(MySQL) |
|---|---|---|---|
| 数值型 | |||
| 1 | tinyint | tinyint | 有符号整数,取值范围 -128 ~ +127 |
| 2 | smallint | smallint | 有符号整数,取值范围 -32768 ~ +32767 |
| 3 | mediumint | mediumint | 有符号整数,取值范围 - 8388608 ~ +8388607 |
| 4 | int | int | 有符号整数,取值范围 -2147483648 ~ +2147483647 |
| 5 | bigint | bigint | 有符号整数,取值范围 -2⁶³ ~ +2⁶³-1 |
| 6 | signed/unsigned | signed/unsigned | 有符号整数和无符号整数 |
| 6 | decimal(m\[,d)]dec(m\[,d)] | decimal(precision, scale)numeric(precision, scale)number(precision, scale) | 精确数据类型,可指定精度和标度。精度 m 取值范围 1~65,标度 d 取值范围 0~30 |
| 7 | real | real | 单精度浮点数 |
| 8 | double(m,d) | double precision (n) | 双精度浮点数 |
| 9 | double precision(m,d) | double precision (n) | 双精度浮点数 |
| 10 | float§ | float§ | p 取值为 0~23 时,单精度浮点数。当 p 取值为 24~53 时,双精度浮点数 |
| 8 | fixed (m,d) | fixed (precision, scale) | 精确数据类型满足小数点前最多支持 131072 位,小数点后最多支持 16383 位。 |
| 位串类型 | |||
| 1 | bit(m) | bit(n) | 位字段类型,位数 m 取值范围 1~64 |
| 2 | binary(m) | binary(n) | 定长二进制字符串 |
| 3 | varbinary(m) | varbinary(n) | 变长二进制字符串 |
| 字符类型 | |||
| 1 | char(n) | char(n \[char|byte)] character(n \[char|byte)] | 定长字符串类型,n 最大长度是 10485760 个字节或者字符 |
| 2 | varchar(n) | char varying(n \[char|byte)] varchar(n \[char|byte)] | 变长字符串类型,n 最大长度是 10485760 个字节或者字符 |
| 3 | set('value1','value2',...) | set | 集合类型 |
| 4 | enum('value1','value2',...) | enum | 枚举类型 |
| 大对象类型 | |||
| 1 | tinytext | tinytext | 文本字符类型,最大长度为 255 个字节 |
| 2 | text | text | 文本字符类型,最大长度 1g 字节 |
| 3 | mediumtext | mediumtext | 文本字符类型,最大长度 16777215 个字节 |
| 4 | longtext | longtext | 文本字符类型,最大长度 1g 字节 |
| 5 | tinyblob | tinyblob | 二进制字符类型,最大长度为 255 字节 |
| 6 | blob | blob | 二进制字符类型,最大长度 1g 字节 |
| 7 | mediumblob | mediumblob | 二进制字符类型,最大长度 16777215 字节 |
| 8 | longblob | longblob | 二进制字符类型,最大长度 1g 字节 |
| 时间日期类型 | |||
| 1 | date | date | 日期值,范围 '1000-01-01' 到 '9999-12-31' |
| 2 | time(fsp) | time§ | 时间值,范围 '-838:59:59.000000' 到 '838:59:59.000000' |
| 3 | year | year | 年份值,范围 '1901' 到 '2155'。 |
| 4 | datetime(fsp) | datetime§ | 时间日期值,范围 '1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999' |
| 5 | timestamp(fsp) | timestamp§ | 时间日期值,范围 '1970-01-01 00:00:01.000000'utc 到 '2038-01-19 03:14:07.999999'utc |
| 布尔类型 | |||
| 1 | bool,boolean | boolean | 布尔值 |
| 空间数据类型 | |||
| 1 | geometry | geometry | 几何类型,存储坐标点信息 |
| 2 | point | point | 点坐标 |
| 3 | linestring | linestring | 线坐标 |
| 4 | polygon | polygon | 多边形 |
| json 类型 | |||
| 1 | json | json | 存储 json 数据 |
二、函数
1、差异函数
bash
#列出当前库所有函数(概要:模式、函数名、入参、返回类型)
test=# \df
#包含系统内置函数
test=# \dfS
#查看函数完整源码 DDL(重点!直接看 create 定义)
test=# \sf sys.concat
#涉及的两个表
1.`sys_proc`:存**函数、存储过程**的核心元数据(函数名、oid、参数、返回类型、函数体等)
2.`sys_namespace`:存**模式 (schema)**信息,nspname 就是模式名
| 序号 | MySQL函数名 | KES函数名 | 功能简要说明 |
|---|---|---|---|
| 数值函数 | |||
| 1 | truncate(x,d) | trunc(n1 , n2 ) | 函数名不同,但函数功能都是截取数字为指定的小数位数 |
| 字符函数 | |||
| 1 | convert(expr,type) | convert(string bytea,src_encoding name,dest_encoding name) | mysql 中,函数可转换参数的数据类型。kes中,函数转换字符串为指定编码格式 |
| 2 | export_set(bits,on,off ,separator\[,number_of_bits]) | export_set(bits,on,off, separator,number_of_bit) | 将返回一个 on 字符串,对于未在 bits 中设置位,将返回一个 off 字符串。返回一个字符串,对于在值 bits 中设置的位。与 mysql 相比,kes中 separator 和 number_of_bits 参数必须指定,不可选 |
| 6 | length(str) | length(string) | mysql 中,返回字符串的字节长度。kes 返回字符串的字符长度 |
| 7 | ltrim(str) | ltrim(string text , set text) | 函数删除指定字符串左侧的空格。kes 多一个可选参数 set,删除 set 中所有出现的字符,直到到达一个不在的字符 |
| 8 | make_set(bits,str1,str2,...) | make_set(bits,oid) | 返回一个 set 值,该值由在 bits 中具有相应位的字符串组成。str1 对应位 0,str2 对应位 1,依次类推。str1,str2,... 中的 null 值不会附加到结果中。与 mysql 相比,kes 中该值由指定 set 类型在 bits 中具有相应位的字符串组成 |
| 9 | rtrim(str) | rtrim(string text , set text) | 函数删除指定字符串右侧的空格。kes 多一个可选参数 set,删除 set 中所有出现的字符,直到到达一个不在的字符 |
| 10 | substr(str,pos), substr(str from pos), substr(str,pos,len), substr(str from pos for len) | substr | substrb | substrc | substr2 | substr4 ( char , position , substring_length ) | mysql 有四种形式,函数从一个字符串中返回指定位置开始的子串。kes 中,函数功能也一致。此外,substr 使用输入字符集定义的字符计算长度。substrb 使用字节而不是字符。substrc 使用 unicode 完整字符。substr2 使用 ucs2 代码点。substr4 使用 ucs4 代码点 |
| 时间日期函数 | |||
| 1 | extract(unit from date) | extract(field from source) | 从指定的日期时间中提取指定的部分,其中第一个参数是提取部分的标识,kes 和 mysql 标识参数的值不同 |
| 2 | now(fsp) | now() | mysql 的 now 函数返回秒精度为 0 的系统日期时间,kes 的 now 函数返回带时区秒精度为 6 的系统时间 |
| 3 | str_to_date(str,format) | str_to_date(str,format) | 字符串按照指定的日期时间格式进行格式化,kes 和 mysql 支持的格式化符号有所不同 |
| 聚集函数 | |||
| 1 | json_arrayagg(col_or_expr) | json_agg(expression), jsonb_agg(expression), json_arrayagg(expression) | 将指定列或者表达式聚集为 json 数组 |
| 2 | json_objectagg(key, value) | json_object_agg(name, value), jsonb_object_agg(name, value), json_objectagg(name, value) | 将键值对聚集成 json 对象 |
| json 函数 | |||
| 1 | json_array(val\[, val ...]) | json_array ( { null|absent } on null value_expression \[ format json returning data_type \[ format json \[ encoding utf8 ]]]) | 返回包含所有参数的 json 数组。kes 还提供了其他参数,可以指定结果为 null 的行为,返回的结果数据类型,详见 json_array |
| 2 | json_extract(json_doc, path , path ...) | json_extract_path(from_json json, variadic path_elems text\[\]) | 功能都是在 json 数组中提取路径表达式指定的数据。mysql 和 kes 指定路径表达式方式不同,mysql 需要使用 $ 符号 |
| 3 | json_object(key, val \[, key, val ...]) | json_object( keys text\[\], values text\[\]) | 返回由参数指定的所有键值对的 json 对象。此外,kes json_object 函数还支持另外两种语法,参见 json_object |
| 4 | json_table(expr, path columns ( ( name for ordinality|name type path string path {null|error|default json_string} on error|empty |name type exists path string path |nested path path columns (column_list),...)) as alias | json_table (context_item, path_expression asjson_path_name passing { value as varname} \[, ... ] columns (json_table_column , ... )plan ( json_table_plan) plan default ( { innerouter } \[ , { cross union} |{ cross|union } , {inner outer } )][{error|empty} on error | 从指定 json 数组中提取数据并返回一个包含指定列的关系表 kes 和 mysql 函数参数有所不同,详见 json_table |
| |empty} on error] ) |
2、相同函数
| 序号 | mysql 函数名 | kes函数名 | 功能简要说明 |
|---|---|---|---|
| 数值函数 | |||
| 1 | abs(x) | abs(n) | 绝对值 |
| 2 | acos(x) | acos(n) | 反余弦 |
| 3 | asin(x) | asin(n) | 反正弦 |
| 4 | atan(x) | atan(n) | 反正切 |
| 5 | atan2(y,x) | atan2(n1, n2) | 返回两个变量的反正切 |
| 6 | ceil(x),ceiling(x) | ceil(n),ceiling(n) | 返回大于或等于 n 的最小整数 |
| 7 | cos(x) | cos(n) | 返回余弦 |
| 8 | cot(x) | cot(n) | 返回余切 |
| 9 | div(x) | div(n) | 整除 |
| 10 | degrees(x) | degrees(dp) | 把弧度转化为角度 |
| 11 | exp(x) | exp(n) | 返回自然常数 e 指定数值的次方 |
| 12 | floor(x) | floor(n) | 返回等于或小于 n 的最大整数 |
| 13 | ln(x) | ln(n) | 返回参数的自然对数 |
| 14 | log(x), log(b,x) | log(n) log(n2 numeric, n1 numeric) | 返回指定数字,指定底数的对数 |
| 15 | log10(x) | log10(n) | 返回指定数字以 10 为底的对数 |
| 16 | mod(n,m) | mod(y,x) | 取余数 |
| 17 | pi() | pi() | 返回 π 值 |
| 18 | pow(x,y), power(x,y) | power(a, b) | 计算 a 的 b 次幂并返回结果 |
| 19 | radians(x) | radians(dp) | 把角度 dp 转为弧度。 |
| 20 | rand(n) | rand(seed), random() | 生成范围 0.0 <= x <1.0 中的随机值 |
| 21 | round(x,d) | round(v numeric, s int) | 将数字四舍五入到指定的小数位数 |
| 21 | sign(x) | sign(n) | 返回指定数字的符号 |
| 23 | sin(x) | sin(n) | 正弦值 |
| 24 | sqrt(x) | sqrt(n) | 返回数字的平方根 |
| 25 | tan(x) | tan(n) | 正切值 |
| 字符函数 | |||
| 1 | bit_length(str) | bit_length(string) | 返回字符串位长度 |
| 2 | char_length(str), character_length(str) | char_length(string), character_length(str) | 返回字符串的字符数 |
| 序号 | mysql 函数名 | kes函数名 | 功能简要说明 |
|---|---|---|---|
| 3 | concat(str1,str2,...) | concat(str "any" , str "any" \[, ... ]) | 拼接多个字符串 |
| 4 | concat_ws(separator, str1,str2,...) | concat_ws(sep text,str "any" ,str "any" \[, ...]) | 通过指定分隔符来拼接多个字符串 |
| 5 | find_in_set(str,strlist) | find_in_set(str,strlist) | 返回第二个参数中第一个参数的索引(位置) |
| 6 | from_base64(str) | from_base64(string) | 解码 base64 编码的字符串,并以二进制字符串的形式返回结果 |
| 7 | isnull(expr) | isnull(expr) | 判断表达式 expr 为 null,则返回值 1,非空返回 0 |
| 8 | lcase(str) | lcase(string) | 将字符串转为小写 |
| 9 | locate(substr,str),locate(substr,str,pos) | locate(substr, str),locate(substr, str, pos) | 返回子字符串在字符串中第一次出现的位置索引,位置计数的起始值为 1。 |
| 10 | lower(str) | lower(string) | 将字符串转为小写 |
| 11 | lpad(str,len,padstr) | lpad(string text,length int , fill text) | 在字符串左侧填充指定的字符串,使其达到指定的长度 |
| 12 | mid(str,pos,len) | mid(str, pos, count) | 返回一个字符串指定位置指定长度的子串 |
| 13 | octet_length(str) | octet_length(string) | 返回字符串以字节为单位的长度 |
| 14 | position(substr in str) | position(substring in string) | 返回指定子串在指定字符串第一次出现的位置 |
| 15 | regexp_like(expr, pat, match_type) | regexp_like( source, pattern ,match_param) | 判断一个字符串是否和一个正则表达式匹配 |
| 16 | regexp_replace(expr, pat, repl , pos\[, occurrence\[, match_type]]) | regexp_replace(source, pattern, replacement , position \[, occurrence \[, flag ]]) | 将匹配正则表达式模式的子串替换为新文本 |
| 17 | repeat(str,count) | repeat(string text, number int) | 指定字符串重复指定次数并返回新串 |
| 18 | replace(str,from_str,to_str) | replace(string text, from text, to text) | 将字符串中出现的所有子串替换为新的子串 |
| 19 | right(str,len) | right(string, length) | 返回字符串最右边指定数量的字符子串 |
| 20 | rpad(str,len,padstr) | rpad(string text, length int , fill text) | 在字符串右侧填充指定的子串,使其达到指的长度 |
| 21 | substring(str,pos),substring(str from pos),substring(str,pos,len), substring(str from pos for len) | substring(string from int for int) | 从一个字符串中返回指定位置指定长度的子串 |
| 22 | substring_index(str,delim,count) | substring_index(str,delimiter,count) | 返回字符串中指定间隔符出现在指定次数之前的子串 |
| 23 | to_base64(str) | to_base64(string) | 返回字符串以 base-64 形式编码的字符表示 |
| 24 | trim({both |leading |trailing} \[remstr from]str),trim(remstr from str) | trim( { leading|trailing|both } \[ trim_character |trim_character } from trim_source ) | 删除字符串前导和尾随的指定字符或者空格 |
| 25 | ucase(str) | ucase(string) | 将字符串转为大写 |
| 26 | upper(str) | upper(string) | 将字符串转换为大写 |
| 时间日期函数 |
| 序号 | mysql 函数名 | kes函数名 | 功能简要说明 |
|---|---|---|---|
| 1 | adddate(date,interval expr unit), adddate(expr,days) | adddate(n1, n2) | 指定日期 / 时间加上指定的时间间隔 |
| 2 | addtime(expr1,expr2) | addtime(n1, n2) | 指定时间上加上指定的时间间隔 |
| 3 | convert(expr, type) | convert(expr, type) | 将输入的 expr 转化为固定的 type 类型 |
| 4 | convert_tz(dt,from_tz,to_tz) | convert_tz(dt,from_tz,to_tz) | 将一个时区的时候转换为另一个时区的时间 |
| 5 | curdate() | curdate() | 返回当前系统的日期 |
| 6 | current_date() | current_date() | 返回当前系统的日期 |
| 7 | current_time() | current_time(precision) | 返回系统时间 |
| 8 | current_timestamp() | current_timestamp(precision) | 返回系统日期时间 |
| 9 | curtime() | curtime() | 返回当前系统的时间 |
| 10 | date_add(date,interval expr unit) | date_add(n,interval) | 从日期时间上加上指定的时间间隔 |
| 11 | date_sub(date,interval expr unit) | date_sub(n,interval) | 从日期时间上减去指定的时间间隔 |
| 12 | datediff(expr1,expr2) | datediff(n1,n2) | 返回两个日期值之间的天数 |
| 13 | day(date) | day(n) | 返回指定日期的月份的日期值 |
| 14 | dayname(date) | dayname(n) | 返回指定日期的星期名称 |
| 15 | dayofmonth(date) | dayofmonth(n) | 返回指定日期的月份的日期 |
| 16 | dayofweek(date) | dayofweek(n) | 返回给定日期的星期索引 |
| 17 | dayofyear(date) | dayofyear(n) | 返回给定日期所在当前年份中的第几天 |
| 18 | format_pico_time(n) | format_pico_time(n) | 将皮秒值转换为带单位指示符的文本字符串 |
| 19 | from_days(n) | from_days(n) | 将天数值转换为日期 |
| 20 | from_unixtime(unix_timestamp , format) | from_unixtime(n ,'format') | 将 unix 时间戳转化为以当前会话时区表示的日期时间值 |
| 21 | get_format({date|time|datetime}, {'eur'|'usa'|'jis'|'iso'|'internal'} ) | 同前面 | 返回指定的国家地区时间输出格式 |
| 22 | hour(time) | hour(n) | 返回给定时间的小时部分 |
| 23 | localtime(fsp) | localtime(n) | 返回系统日期时间 |
| 24 | localtimestamp(fsp) | localtimestamp(n) | 返回系统日期时间 |
| 25 | last_day(date) | last_day(date) | 计算日期所在月份的最后一天 |
| 26 | makedate(year,dayofyear) | makedate(year,dayofyear) | 返回指定年份第 n 天的日期值 |
| 27 | maketime(hour,minute,second) | maketime(hour,minute,second) | 返回由参数指定组成的时间值 |
| 28 | microsecond(expr) | microsecond(n) | 返回指定时间的微秒值 |
| 29 | minute(time) | minute(n) | 返回指定时间的分钟值 |
| 30 | month(date) | month(n) | 返回指日期的月份值 |
| 31 | monthname(date) | monthname(n) | 返回指日期的月份名称 |
| 32 | period_add(p,n) | period_add(p,n) | 指定年月上加上指定的月份数 |
| 序号 | mysql 函数名 | kes函数名 | 功能简要说明 |
|---|---|---|---|
| 33 | period_diff(p1,p2) | period_diff(p,n) | 计算两个年月值相差的月份数 |
| 34 | quarter(date) | quarter(n) | 返回日期的季度数 |
| 35 | second(time) | second(n) | 返回指定日期时间的秒值 |
| 36 | sec_to_time(seconds) | sec_to_time(n) | 将秒数转换为时分秒格式并返回 |
| 37 | subtime(expr1,expr2) | subtime(n1, n2) | 指定时间上减去指的的时间间隔 |
| 38 | time(n) | time(n) | 返回给定日期的时间部分 |
| 39 | timediff(expr1,expr2) | timediff(n1,n2) | 计算两个时间的差值 |
| 40 | timestamp(n1 , n2) | timestamp(n1 , n2) | 将日期时间值 n1 与时间值 n2 相加并返回 timestamp 类型值 |
| 41 | timestampadd(unit,interval,datetime_expr) | timestampadd('unit',interval,n) | 将指定时间间隔加到日期时间值上 |
| 42 | timestampdiff(unit, datetime_expr1, datetime_expr2) | timestampdiff('unit',n1,n2) | 返回两个日期时间的时间间隔 |
| 43 | time_format(time,format) | time_format(time,format) | 按照指定的格式格式化时间 |
| 44 | time_to_sec(time) | time_to_sec(n) | 将输入的时间转换为秒数 |
| 45 | to_days(date) | to_days(n) | 将指定日期转换为距离 0 年的天数 |
| 46 | to_seconds(expr) | to_seconds(n) | 返回日期时间值 n 距离 0 年的秒数 |
| 47 | unix_timestamp(expr) | unix_timestamp(expr) | 将 date、timestamp、time 类型的 n 或指定格式的数值 n 转换为对应 utc 日期时间 |
| 48 | utc_date() | utc_date() | 获取当前服务器的 utc 日期(即格林威治标准日期) |
| 49 | utc_time(fsp) | utc_time(n) | 获取当前服务器的 utc 时间(即格林威治标准时间) |
| 50 | utc_timestamp(fsp) | utc_timestamp(n) | 获取当前服务器的 utc 日期时间(即格林威治标准日期时间) |
| 51 | week(date,mode) | week(n , mode) | 返回日期位于当年的第几周 |
| 52 | weekday(date) | weekday(n) | 返回指定日期的星期索引 |
| 53 | weekofyear(date) | weekofyear(n) | 返回指定日期的所在周数值 |
| 54 | year(date) | year(n) | 提取日期中的年份值 |
| 55 | yearweek(date,mode) | yearweek(n , mode) | 返回指定日期的年份与日期所在当年周数值 |
| 聚集函数 | |||
| 1 | avg(expr) | avg(expression) | 计算平均值 |
| 2 | bit_and(expr) | bit_and(expression) | 按位与运算 |
| 3 | bit_or(expr) | bit_or(expression) | 按位或运算 |
| 4 | count(expr) | count(expression) | 返回查询行数 |
| 5 | group_concat(expr) | group_concat(expression) | 将分组中指定列或表达式连接组成新的字符串 |
| 序号 | mysql 函数名 | kes函数名 | 功能简要说明 |
|---|---|---|---|
| 6 | max(expr) | max(expression) | 最大值 |
| 7 | min(expr) | min(expression) | 最小值 |
| 8 | stddev(expr) | stddev(expression) | 总体标准值 |
| 9 | stddev_pop(expr) | stddev_pop(expression) | 总体标准差 |
| 10 | stddev_samp(expr) | stddev_samp(expression) | 样本标准差 |
| 11 | sum(expr) | sum(expression) | 总和 |
| 12 | var_pop(expr) | var_pop(expression) | 总体方差 |
| 13 | var_samp(expr) | var_samp(expression) | 样本方差 |
| 14 | variance(expr) | variance(expression) | 总体方差 |
| 窗口函数 | |||
| 1 | cume_dist() | cume_dist() | 返回当前行的累积分布 |
| 2 | dense_rank() | dense_rank() | 返回所在分区内的排名 |
| 3 | first_value(expr) | first_value(expression) | 返回当前关联窗口的第一行 |
| 4 | lag(expr , n\[, default]) | lag(value anyelement, offset integer \[,default anyelement ]) | 返回当前行所在分区内当前行之前指定行之内的值 |
| 5 | last_value(expr) | last_value(expression) | 返回当前关联窗口的最后一行 |
| 6 | lead(expr , n\[, default]) | lead(value anyelement, offset integer \[,default anyelement ]) | 返回当前行所在分区内当前行之后指定行之内的值 |
| 7 | nth_value(expr, n) | nth_value(value any, nth integer) | 从当前关联窗口的指定一行中返回评估值 |
| 8 | ntile(n) | ntile(num_buckets integer) | 将当前行所在分区内的所有行尽可能平均分成指定数量的区间 |
| 9 | percent_rank() | percent_rank() | 返回当前行所在分区内的相对排名 |
| 10 | rank() | rank() | 返回当前行所在分区内的排名 |
| 11 | row_number() | row_number() | 返回当前行所在分区内的序号 |
| 其他函数 | |||
| 1 | row_count() | row_count() | 返回上一条语句的影响行数 |
三、SQL差异
| 序号 | 功能 | mysql | kes |
|---|---|---|---|
| 常量 | |||
| 1 | current_catalog | 支持 | 支持 |
| 2 | current_role | 支持 | 支持 |
| 3 | current_schema | 支持 | 支持 |
| 4 | current_user | 支持 | 支持 |
| 5 | localtimestamp | 支持 | 支持 |
| 6 | null | 支持 | 支持 |
| 7 | session_user | 支持 | 支持 |
| 8 | sysdate | 支持 | 支持 |
| 9 | user | 支持 | 支持 |
| 操作符 | |||
| 1 | 算术操作符:+、-、*、/、%、mod、div | 支持 | 支持 |
| 2 | 逻辑操作符:not、!、and、&&、or、||、xor | 支持 | 支持 |
| 3 | 位操作符:|、&、<<、>>、~ | 支持 | 支持 |
| 4 | 位操作符:# | 不支持 | 支持 |
| 5 | 比较操作符:==、<=>、<>、!=、<、>、>=、<= | 支持 | 支持 |
| 6 | 集合操作符:union all、intersect all、except all | 支持 | 支持 |
| 条件比较 | |||
| 1 | notbetween ... and | 支持 | 支持 |
| 2 | notexists(subquery) | 支持 | 支持 |
| 3 | notin | 支持 | 支持 |
| 4 | is not null | 支持 | 支持 |
| 5 | not like | 支持 | 支持 |
| 6 | rlike | 支持 | 不支持 |
| 数据对象类型 | |||
| 1 | 表、分区表 | 支持 | 支持 |
| 2 | 全局临时表 | 不支持 | 支持 |
| 3 | 表空间 | 支持 | 支持 |
| 4 | 视图 | 支持 | 支持 |
| 5 | 序列 | 不支持 | 支持 |
| 6 | 自定义函数、存储过程 | 支持 | 支持 |
| 7 | 包 | 不支持 | 支持 |
| 8 | 索引 | 支持 | 支持 |
| 9 | 全局索引 | 支持 | 支持 |
| 10 | logfile group | 支持 | 不支持 |
| 11 | 物化视图 | 不支持 | 支持 |
| 12 | 触发器 | 支持 | 支持 |
| 13 | 隐含列 | 不支持 | 支持 |
| 14 | 约束 | 支持 | 支持 |
| 15 | 外部表 | 不支持 | 支持 |
| 16 | dblink | 不支持 | 支持 |
| 17 | 实例 | 支持 | 不支持 |
| 18 | 用户、角色 | 支持 | 支持 |
| sql 语句 | |||
| 1 | call 语句 | 支持 | 支持 |
| 2 | do 语句 | 支持 | 支持(有差异) |
| 3 | except、intersect、union 语句 | 支持 | 支持 |
| 4 | delete from partition | 支持 | 支持 |
| 5 | insert ... select | 支持 | 支持 |
| 6 | insert ... set | 支持 | 支持 |
| 7 | insert ... on duplicate key update | 支持 | 支持 |
| 8 | insert delayed | 支持 | 不支持 |
| 9 | update ... order by/limit | 支持 | 支持 |
| 10 | load data/xml | 支持 | 支持 |
| 11 | replace into | 支持 | 支持 |
| 12 | select ... limit | 支持 | 支持 |
| 13 | select ... into | 支持 | 支持 |
| 14 | select ... join | 支持 | 支持 |
| 15 | 包含等号操作符的子查询 | 支持 | 支持 |
| 16 | 包含比较操作符的子查询 | 支持 | 支持 |
| 17 | 包含 any、in、some 的子查询 | 支持 | 支持 |
| 18 | 包含 all 的子查询 | 支持 | 支持 |
| 19 | 行子查询 | 支持 | 支持 |
| 20 | 包含 exists、not exists 的子查询 | 支持 | 支持 |
| 21 | 包含对外层查询表引用的子查询 | 支持 | 支持 |
| 22 | 包含 from 子句的子查询 | 支持 | 支持 |
| 23 | table 语句 | 支持 | 支持 |
| 24 | update 语句 | 支持 | 支持 |
| 25 | values 语句 | 支持 | 支持 |
| 26 | with as 语句 | 支持 | 支持 |
| 27 | start transaction | 支持 | 支持 |
| 28 | commit、rollback | 支持 | 支持 |
| 29 | savepoint、rollback to savepoint、release savepoint | 支持 | 支持 |
| 30 | lock/unlock instance | 支持 | 不支持 |
| 31 | lock/unlock table | 支持 | 支持 |
| 32 | set transaction | 支持 | 支持 |
| 33 | alter/create/drop user/role | 支持 | 支持 |
| 34 | grant/revoke | 支持 | 支持 |
| 35 | set role | 支持 | 支持 |
| 36 | set password for | 支持 | 不支持 |
| 37 | alter/create/drop resource group | 支持 | 支持 |
| 38 | analyze table | 支持 | 支持 |
| 39 | check/checksum table | 支持 | 不支持 |
| 40 | set、reset 语句 | 支持 | 支持 |
| 41 | show 语句 | 支持 | 支持(有差异) |
| 42 | explain 语句 | 支持 | 支持 |
| 43 | create/alter ... comment 'string' | 支持 | 支持 |
| 44 | create table ... on update | 支持 | 支持 |
四、PL/SQL差异
| 序号 | 功能 | mysql | kes |
|---|---|---|---|
| 数据类型 | |||
| 1 | set | 支持 | 支持 |
| 2 | enum | 支持 | 支持 |
| 3 | 集合类型(nested tables、associative arrays、varrays) | 不支持 | 不支持 |
| 4 | record | 不支持 | 支持 |
| 5 | 游标 | 支持 | 支持 |
| pl/sql 对象 | |||
| 1 | 触发器 | 支持 | 支持 |
| 2 | 匿名块 | 不支持 | 支持 |
| 3 | 存储过程 | 支持 | 支持 |
| 4 | 函数 | 支持 | 支持 |
| 5 | 包 | 不支持 | 不支持 |
| 6 | type 类型对象 | 不支持 | 不支持 |
| pl/sql 语句 | |||
| 1 | begin ... end | 支持 | 支持 |
| 2 | labels 标签语句 | 支持 | 支持 |
| 3 | declare 语句 | 支持 | 支持 |
| 4 | 变量声明和赋值 | 支持 | 支持 |
| 5 | case 语句 | 支持 | 支持 |
| 6 | if then/ if then else/if then elseif | 支持 | 支持 |
| 7 | loop 语句 | 支持 | 支持 |
| 8 | for ... loop/while ... loop | 不支持 | 支持 |
| 9 | foreach 语句 | 不支持 | 支持 |
| 10 | repeat 语句 | 支持 | 支持 |
| 11 | return 语句 | 支持 | 支持 |
| 12 | while 语句 | 支持 | 支持 |
| 13 | continue 语句 | 不支持 | 支持 |
| 14 | leave 语句 | 支持 | 支持 |
| 15 | exit 语句 | 不支持 | 支持 |
| 16 | 游标 cursor close 语句 | 支持 | 支持 |
| 17 | 游标 cursor declare 语句 | 支持 | 支持 |
| 18 | 游标 cursor fetch 语句 | 支持 | 支持 |
| 19 | 游标 cursor open 语句 | 支持 | 支持 |
| 20 | execute 语句 | 支持 | 支持 |
| 21 | execute immediate 语句 | 不支持 | 支持 |
| 22 | 异常处理 exception 语句 | 不支持 | 支持 |