1、数值型函数

函数分类 函数名 语法格式 返回值类型 描述 示例 示例结果
基本运算 ABS ABS(x) 与输入相同 返回绝对值 SELECT ABS(-3.5); 3.5
SIGN SIGN(x) TINYINT 返回参数的符号(正数1,负数-1,0返回0) SELECT SIGN(-10); -1
取整函数 CEIL/CEILING CEIL(x) BIGINT 向上取整 SELECT CEIL(3.2); 4
FLOOR FLOOR(x) BIGINT 向下取整 SELECT FLOOR(3.7); 3
ROUND ROUND(x[, d]) 与输入相同 四舍五入(可指定小数位数) SELECT ROUND(3.1415,2); 3.14
TRUNCATE TRUNCATE(x, d) 与输入相同 数值截断(非四舍五入) SELECT TRUNCATE(3.1415,2); 3.14
幂指对数 POW/POWER POW(x, y) DOUBLE 幂运算(x的y次方) SELECT POW(2,3); 8.0
EXP EXP(x) DOUBLE 自然指数函数(e的x次方) SELECT EXP(1); 2.718281828459045
LN LN(x) DOUBLE 自然对数 SELECT LN(E()); 1.0
LOG LOG([base], x) DOUBLE 对数函数(可指定底数) SELECT LOG(2,8); 3.0
LOG10 LOG10(x) DOUBLE 以10为底的对数 SELECT LOG10(100); 2.0
LOG2 LOG2(x) DOUBLE 以2为底的对数 SELECT LOG2(8); 3.0
三角函数 SIN SIN(x) DOUBLE 正弦函数(参数为弧度) SELECT SIN(PI()/2); 1.0
COS COS(x) DOUBLE 余弦函数 SELECT COS(0); 1.0
TAN TAN(x) DOUBLE 正切函数 SELECT TAN(PI()/4); 1.0
COT COT(x) DOUBLE 余切函数 SELECT COT(1); 0.6420926159343306
反三角函数 ASIN ASIN(x) DOUBLE 反正弦函数(参数范围[-1,1]) SELECT ASIN(0.5); 0.5235987755982989
ACOS ACOS(x) DOUBLE 反余弦函数 SELECT ACOS(0.5); 1.0471975511965979
ATAN ATAN(x) DOUBLE 反正切函数 SELECT ATAN(1); 0.7853981633974483
角度弧度 DEGREES DEGREES(x) DOUBLE 弧度转角度 SELECT DEGREES(PI()); 180.0
RADIANS RADIANS(x) DOUBLE 角度转弧度 SELECT RADIANS(180); 3.141592653589793
常数函数 PI PI() DOUBLE 返回圆周率π SELECT PI(); 3.141592653589793
E E() DOUBLE 返回自然常数e SELECT E(); 2.718281828459045
其他函数 BIN BIN(x) VARCHAR 十进制转二进制 SELECT BIN(10); “1010”
CONV CONV(x, from_base, to_base) VARCHAR 进制转换 SELECT CONV('10',10,2); “1010”
MOD MOD(x, y) 与输入相同 取模运算 SELECT MOD(10,3); 1
PMOD PMOD(x, y) 与输入相同 正取模运算(结果始终为正) SELECT PMOD(-10,3); 2
RAND RAND([seed]) DOUBLE 生成0-1的随机数(可选种子) SELECT RAND(); 0.123…
GREATEST GREATEST(x1, x2,...) 与输入相同 返回参数列表中的最大值 SELECT GREATEST(3,5,1); 5
LEAST LEAST(x1, x2,...) 与输入相同 返回参数列表中的最小值 SELECT LEAST(3,5,1); 1
SQRT SQRT(x) DOUBLE 平方根 SELECT SQRT(9); 3.0
UUID_NUMERIC UUID_NUMERIC() LARGEINT 返回一个 LARGEINT 类型的 uuid。注意 LARGEINT 是一个 Int128,所以 uuid_numeric() 可能会得到负值。 select uuid_numeric(); 82218484683747862468445277894131281464

2、字符型函数

函数分类 函数名 语法格式 返回值类型 描述 示例 示例结果
字符串修改 APPEND_TRAILING_CHAR_IF_ABSENT APPEND_TRAILING_CHAR_IF_ABSENT(str, char) VARCHAR 确保字符串以指定字符结尾 SELECT APPEND_TRAILING_CHAR_IF_ABSENT('hello', '!'); “hello!”
CONCAT CONCAT(str1, str2, ...) VARCHAR 字符串拼接 SELECT CONCAT('A','pache'); “Apache”
CONCAT_WS CONCAT_WS(sep, str1, str2, ...) VARCHAR 带分隔符拼接 SELECT CONCAT_WS('-','2025','08','16'); “2025-08-16”
LOWER/LCASE LOWER(str) VARCHAR 转小写 SELECT LOWER('DORIS'); “doris”
UPPER/UCASE UPPER(str) VARCHAR 转大写 SELECT UPPER('doris'); “DORIS”
REVERSE REVERSE(str) VARCHAR 反转字符串 SELECT REVERSE('123'); “321”
REPEAT REPEAT(str, n) VARCHAR 重复字符串 SELECT REPEAT('A',3); “AAA”
REPLACE REPLACE(str, old, new) VARCHAR 字符串替换 SELECT REPLACE('abc','b','B'); “aBc”
TRANSLATE TRANSLATE(str, from, to) VARCHAR 字符级替换 SELECT TRANSLATE('abc','ac','AC'); “AbC”
字符串截取 SUBSTRING/SUBSTR SUBSTRING(str, pos[, len]) VARCHAR 截取子串 SELECT SUBSTRING('Apache',2,3); “pac”
LEFT LEFT(str, len) VARCHAR 左截取 SELECT LEFT('Apache',3); “Apa”
RIGHT RIGHT(str, len) VARCHAR 右截取 SELECT RIGHT('Apache',3); “che”
TRIM TRIM([BOTH | LEADING | TRAILING] chars FROM str) VARCHAR 去除首尾字符 SELECT TRIM(' hello '); “hello”
字符串查找 INSTR INSTR(str, substr) INT 子串位置 SELECT INSTR('Apache','che'); 4
LOCATE LOCATE(substr, str[, pos]) INT 子串定位 SELECT LOCATE('a','Apache'); 2
POSITION POSITION(substr IN str) INT 子串位置 SELECT POSITION('che' IN 'Apache'); 4
字符串信息 LENGTH/CHAR_LENGTH LENGTH(str) INT 字符串长度 SELECT LENGTH('Doris'); 5
BYTE_LENGTH BYTE_LENGTH(str) INT 字节长度 SELECT BYTE_LENGTH('中国'); 6
BIT_LENGTH BIT_LENGTH(str) INT 比特长度 SELECT BIT_LENGTH('A'); 8
格式化函数 FORMAT FORMAT(number, decimals) VARCHAR 数字格式化 SELECT FORMAT(1234.567, 2); “1,234.57”
LPAD LPAD(str, len, pad_str) VARCHAR 左填充 SELECT LPAD('12',5,'0'); “00012”
RPAD RPAD(str, len, pad_str) VARCHAR 右填充 SELECT RPAD('12',5,'!'); “12!!!”
编码解码 BASE64_ENCODE BASE64_ENCODE(str) VARCHAR Base64编码 SELECT BASE64_ENCODE('Doris'); “RG9yaXM=”
BASE64_DECODE BASE64_DECODE(str) VARCHAR Base64解码 SELECT BASE64_DECODE('RG9yaXM='); “Doris”
URL_ENCODE URL_ENCODE(str) VARCHAR URL编码 SELECT URL_ENCODE('a b'); “a+b”
URL_DECODE URL_DECODE(str) VARCHAR URL解码 SELECT URL_DECODE('a+b'); “a b”
正则函数 REGEXP_EXTRACT REGEXP_EXTRACT(str, pattern[, group]) VARCHAR 正则提取 SELECT REGEXP_EXTRACT('abc123','[a-z]+'); “abc”
REGEXP_REPLACE REGEXP_REPLACE(str, pattern, repl) VARCHAR 正则替换 SELECT REGEXP_REPLACE('a1b2','\d','X'); “aXbX”
REGEXP_LIKE REGEXP_LIKE(str, pattern) BOOLEAN 正则匹配 SELECT REGEXP_LIKE('abc','^a'); true
JSON处理 JSON_QUOTE JSON_QUOTE(str) VARCHAR 添加JSON引号 SELECT JSON_QUOTE('text'); “"text"“
JSON_UNQUOTE JSON_UNQUOTE(str) VARCHAR 去除JSON引号 SELECT JSON_UNQUOTE('\"text\"'); “text”

3、日期函数

函数分类 函数名 语法格式 返回值类型 描述 示例 示例结果
当前时间 CURRENT_DATE CURRENT_DATE() DATE 当前日期 SELECT CURRENT_DATE(); 2025-08-16
CURRENT_TIMESTAMP CURRENT_TIMESTAMP() DATETIME 当前时间戳 SELECT CURRENT_TIMESTAMP(); 2025-08-16 15:30:45
NOW NOW() DATETIME 同CURRENT_TIMESTAMP SELECT NOW(); 2025-08-16 15:30:45
UNIX_TIMESTAMP UNIX_TIMESTAMP([date]) BIGINT 当前/指定时间的Unix时间戳 SELECT UNIX_TIMESTAMP('2025-08-16'); 1755302400
时间提取 YEAR YEAR(date) INT 提取年份 SELECT YEAR('2025-08-16'); 2025
MONTH MONTH(date) INT 提取月份(1-12) SELECT MONTH('2025-08-16'); 8
DAY/DAYOFMONTH DAY(date) INT 提取日(1-31) SELECT DAY('2025-08-16'); 16
HOUR HOUR(datetime) INT 提取小时(0-23) SELECT HOUR('15:30:45'); 15
MINUTE MINUTE(datetime) INT 提取分钟(0-59) SELECT MINUTE('15:30:45'); 30
SECOND SECOND(datetime) INT 提取秒(0-59) SELECT SECOND('15:30:45'); 45
DAYOFWEEK DAYOFWEEK(date) INT 星期几(1=周日,7=周六) SELECT DAYOFWEEK('2025-08-16'); 7
DAYOFYEAR DAYOFYEAR(date) INT 一年中的第几天(1-366) SELECT DAYOFYEAR('2025-08-16'); 228
WEEKOFYEAR WEEKOFYEAR(date) INT 一年中的第几周(1-53) SELECT WEEKOFYEAR('2025-08-16'); 33
时间计算 DATE_ADD DATE_ADD(date, INTERVAL expr unit) DATETIME 日期加法 SELECT DATE_ADD('2025-08-16',INTERVAL 1 DAY); 2025-08-17 00:00:00
DATE_SUB DATE_SUB(date, INTERVAL expr unit) DATETIME 日期减法 SELECT DATE_SUB('2025-08-16',INTERVAL 1 MONTH); 2025-07-16 00:00:00
DATEDIFF DATEDIFF(expr1, expr2) INT 计算日期差(天数) SELECT DATEDIFF('2025-08-20','2025-08-16'); 4
TIMEDIFF TIMEDIFF(expr1, expr2) TIME 计算时间差 SELECT TIMEDIFF('15:30:45','10:00:00'); 05:30:45
TIMESTAMPDIFF TIMESTAMPDIFF(unit, expr1, expr2) BIGINT 计算时间差(指定单位) SELECT TIMESTAMPDIFF(HOUR,'2025-08-16 10:00:00','2025-08-16 15:30:00'); 5
时间转换 FROM_UNIXTIME FROM_UNIXTIME(unix_timestamp[, format]) VARCHAR Unix时间戳转日期 SELECT FROM_UNIXTIME(1755302400); “2025-08-16 00:00:00”
STR_TO_DATE STR_TO_DATE(str, format) DATE 字符串转日期 SELECT STR_TO_DATE('16,8,2025','%d,%m,%Y'); 2025-08-16
DATE_FORMAT DATE_FORMAT(date, format) VARCHAR 格式化日期 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'); “2025-08-16 15:30:45”
CONVERT_TZ CONVERT_TZ(dt, from_tz, to_tz) DATETIME 时区转换 SELECT CONVERT_TZ('2025-08-16 12:00:00','UTC','Asia/Shanghai'); 2025-08-16 20:00:00
特殊函数 LAST_DAY LAST_DAY(date) DATE 返回月份的最后一天 SELECT LAST_DAY('2025-08-16'); 2025-08-31
MAKEDATE MAKEDATE(year, dayofyear) DATE 根据年份和天数创建日期 SELECT MAKEDATE(2025,228); 2025-08-16
MAKETIME MAKETIME(hour, minute, second) TIME 创建时间 SELECT MAKETIME(15,30,45); 15:30:45
PERIOD_ADD PERIOD_ADD(YYYYMM, n) INT 增加月份周期 SELECT PERIOD_ADD(202508,2); 202510
PERIOD_DIFF PERIOD_DIFF(YYYYMM1, YYYYMM2) INT 计算月份差 SELECT PERIOD_DIFF(202510,202508); 2
TIMESTAMPADD TIMESTAMPADD(unit, interval, datetime) DATETIME 时间加法 SELECT TIMESTAMPADD(DAY,1,'2025-08-16'); 2025-08-17 00:00:00
TO_DAYS TO_DAYS(date) INT 计算日期到0000-01-01的天数 SELECT TO_DAYS('2025-08-16'); 738785
FROM_DAYS FROM_DAYS(N) DATE 天数转日期 SELECT FROM_DAYS(738785); 2025-08-16
UTC_TIMESTAMP UTC_TIMESTAMP() DATETIME 当前UTC时间 SELECT UTC_TIMESTAMP(); 2025-08-16 07:30:45
文档更新时间: 2025-08-16 04:20   作者:操李红