MySQL 常用函数
2021-05-19 本文已影响0人
深吸一口气
1、常用函数
1.1、数学函数
函数 | 说明 |
---|---|
abs(x) | 返回 x 的绝对值 |
pi() | 返回圆周率 π,默认显示 6 位小数 |
sqrt(x) | 返回非负数的 x 的二次方根 |
mod(x, y) | 返回 x 被 y 除后的余数 |
ceil(x)、ceiling(x) | 返回不小于 x 的最小整数 |
floor(x) | 返回不大于 x 的最大整数 |
round(x)、round(x, y) | 前者返回最接近于 x 的整数,即对 x 进行四舍五入;后者返回最接近 x 的数,其值保留到小数点后面 y 位,若 y 为负值,则将保留到 x 到小数点左边 y 位 |
sign(x) | 返回参数 x 的符号,-1 表示负数,0 表示 0,1 表示正数 |
pow(x, y)、power(x, y) | 返回 x 的 y 次乘方的值 |
exp(x) | 返回 e 的 x 乘方后的值 |
log(x) | 返回 x 的自然对数, x 相当于基数 e 的对数 |
log10(x) | 返回 x 的基数为 10 的对数 |
radians(x) | 返回 x 由角度转化为弧度的值 |
degrees(x) | 返回 x 由弧度转化为角度的值 |
sin(x)、asin(x) | 前者返回 x 的正弦,其中 x 为给定的弧度值;后者返回 x 的反正弦值,x 为正弦 |
cos(x)、acos(x) | 前者返回 x 的余弦,其中 x 为给定的弧度值;后者返回 x 的反余弦值,x 为余弦 |
tan(x)、atan(x) | 前者返回 x 的正切,其中 x 为给定的弧度值;后者返回 x 的反正切值,x 为正切 |
cot(x) | 返回给定弧度值 x 的余切 |
1.2、字符串函数
函数 | 说明 |
---|---|
char_length(str) | 计算字符串字符个数 |
concat(s1, s2, s3, ...) | 返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为null 则返回值为null
|
concat_ws(x, s1, s2, ...) | 返回多个字符串拼接之后的字符串,每个字符串之间有一个 x |
insert(s1, x, len, s2) | 返回字符串 s1,其子字符串起始于位置 x,被字符串 s2 取代 len 个字符 |
lower(str)、lcase(str) | 将 str 中的字母全部转换成小写 |
upper(str)、ucase(str) | 将 str 中的字母全部转换成大写 |
left(s, n)、ringht(s, n) | 前者返回字符串 s 从最左边开始的 n 个字符;后者返回字符串 s 从最右边开始的 n 个字符 |
lpad(s1, len, s2)、rpad(s1, len, s2) | 前者返回 s1,其左边由字符串 s2 填补到 len 字符长度,假如 s1 的长度大于 len,则返回值被缩短至 len 字符;后者返回 s1,其右边由字符串 s2 填补到 len 字符长度,假如 s1 的长度大于 len,则返回值被缩短至 len 字符 |
ltrim(s)、rtrim(s) | 前者返回字符串 s,其左边所有空格被删除;后者返回字符串 s,其右边所有空格被删除 |
trim(s) | 返回字符串 s 删除了两边空格之后的字符串 |
trim(s1 from s) | 删除字符串 s 两端所有子字符串 s1,未指定 s1 的情况下则默认删除空格 |
repeat(s, n) | 返回一个由重复字符串 s 组成的字符串,字符串 s 的数目等于 n |
space(n) | 返回一个由 n 个空格组成的字符串 |
replace(s, s1, s2) | 返回一个字符串,用字符串 s2 替代字符串 s 中所有的字符串 s1 |
strcmp(s1, s2) | 若 s1 和 s2 中所有的字符串都相同,则返回 0;根据当前分类次序,第一个参数小于第二个则返回 -1,其他情况返回 1 |
substring(s, n, len)、mid(s, n, len) | 两个函数作用相同,从字符串 s 中返回一个第 n 个字符开始、长度为 len 的字符串 |
locate(str1, str)、position(str1 in str)、instr(str, str1) | 三个函数作用相同,返回子字符串 str1 在字符串 str 中的开始位置(从第几个字符开始) |
reverse(s) | 将字符串 s 反转 |
elt(n, str1, str2, str3, ...) | 返回第 n 个字符串 |
1.3、日期和时间函数
函数 | 说明 |
---|---|
curdate()、current_date() | 将当前日期按照YYYY-MM-DD 或者YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定 |
current_timestamp()、localtime()、now()、sysdate() | 这四个函数作用相同,返回当前日期和时间值,格式为YYYY-MM-DD HH:MM:SS 或者YYYYMMDDHHMMSS ,具体格式根据函数用在字符串或数字语境中而定 |
unix_timestamp()、unix_timestamp(date) | 前者返回一个格林尼治标准时间1970-01-01 00:00:00 到现在的秒数;后者返回一个格林尼治标准时间1970-01-01 00:00:00 到指定时间的秒数 |
from_unixtime(date) | 和 unix_timestamp 互为反函数,把 unix 时间戳转换为普通格式的时间 |
utc_date()、utc_time() | 前者返回 utc(世界标准时间)日期值,其格式为YYYY-MM-DD 或YYYYMMDD ;后者返回当前 utc 时间值,其格式为YYYY-MM-DD 或YYYYMMDD 。具体使用哪种取决于函数用在字符串还是数字语境中 |
month(date)、monthname(date) | 前者返回指定日期中的月份;后者返回指定日期中的月份的名称 |
dayname(d)、dayofweek(d)、weekday(d) | dayname 返回 d 对应的工作日的英文名称,如 sunday、monday等;dayofweek 返回的对应一周中的索引,1 表示周日、2 表示周一;weekday 表示 d 对应的工作日索引,0 表示周一,1 表示周二 |
week(d)、weekofyear(d) | 前者计算日期 d 是一年中的第几周;后者计算某一天位于一年中的第几周 |
dayofyear(d)、dayofmonth(d) | 前者返回 d 是一年中的第几天;后者返回 d 是一月中的第几天 |
year(date)、quarter(date)、minute(time)、second(time) | year 返回指定日期对应的年份;quarter 返回 date 对应一年中的季度,范围是 1~4;minute 返回 time 对应的分钟数;second 返回指定时间的秒数 |
extrace(type from date) | 从日期中提取一部分,type 可以是 year、year_month、day_hour、day_microsecond、day_minute、day_second |
time_to_sec(time) | 返回已转换为秒的 time 参数,转换公式为 3600 * 小时 + 60 * 分钟 + 秒
|
sec_to_time() | 和 time_to_sec 互为反函数,将秒值转换为时间格式 |
date_add(date, interval expr type)、add_date(date, interval expr type) | 返回将起始时间加上 expr type 之后的时间,比如 date_add("2010-12-31 23:59:59", interval 1 second) 表示的就是把第一个时间加 1 秒 |
date_sub(date, interval expr type)、subdate(date, interval expr type) | 返回将起始时间减去 expr type 之后的时间 |
addtime(date, expr)、subtime(date, expr) | 前者进行 date 的时间加操作;后者进行 date 的时间减操作 |
1.4、条件判断函数
函数 | 说明 |
---|---|
if(expr, v1, v2) | 如果 expr 是 true 则返回 v1,否则返回 v2 |
ifnull(v1, v2) | 如果 v1 不为 null,则返回 v1,否则返回 v2 |
case expr when v1 then r1 [when v2 then v2] [else rn] end | 如果 expr 等于某个 vn,则返回对应位置 then 后面的结果,如果与所有值都不相等,则返回 else 后面的 rn |
1.5、系统信息函数
函数 | 说明 |
---|---|
version() | 查看 MySQL 版本号 |
connection_id() | 查看当前用户的连接数 |
user()、current_user()、system_user()、session_user() | 查看当前被 MySQL 服务器验证的用户名和主机的组合,一般这几个函数的返回值是相同的 |
charset(str) | 查看字符串 str 使用的字符集 |
collation() | 查看字符串怕列方式 |
1.6、加密函数
函数 | 说明 |
---|---|
password(str) | 从原明文密码 str 计算并返回加密后的字符串密码,注意这个函数的加密是单向的(不可逆),因此不应将它应用在个人的应用程序中,而应该只在 MySQL 服务器的鉴定系统中使用 |
md5(str) | 为字符串算出一个 MD5 128比特校验和,该值以 32 位十六进制数字的二进制字符串形式返回 |
encode(str, pswd_str) | 使用 pswd_str 作为密码,加密 str |
decode(crypt_str, pswd_str) | 使用 pswd_str 作为密码,解密加密字符串 crypt_str,crypt_str 是由 encode 函数返回的字符串 |
1.7、其他函数
函数 | 说明 |
---|---|
format(x, n) | 将数字 x 格式化,并以四舍五入的方式保留小数点后 n 位,结果以字符串形式返回 |
conv(n, from_base, to_base) | 不同进制数之间的转换,返回值为数值 n 的字符串表示,由 from_base 进制转换为 to_base 进制 |
inet_aton(expr) | 给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数,地址可以是 4 或 8 比特 |
inet_ntoa(expr) | 给定一个数字网络地址(4 或 8比特),返回作为字符串的该地址的点表示 |
benchmark(count, expr) | 重复执行 count 次表达式 expr,它可以用于计算 MySQL 处理表达式的速度,结果值通常是 0(0 表示很快,并不是没有速度)。另一个作用是它在 MySQL 客户端内部报告语句执行的时间 |
convert(str using charset) | 使用字符集 charset 表示字符串 str |