MySQL中内置的函数不仅可以在SELECT 中使用, 还可以在INSERT , UPDATE 和 DELETE 等语句中使用.
-
数学类函数:
CEIL(X), CEILIN(X)-----------进一取整
FLOOR(X)-------------舍掉小数部分
ROUND(x, y)----------四舍五入(保留y位小数)
MOD(x,y)---------x除以y以后的余数
ABS(x)-----------取x的绝对值
POWER(x, y), POW(x, y)---------幂运算(x的y次幂)
PI()------------圆周率
RAND()或者RAND(X)------------0~1之间的随机数, x相同时返回的结果相同.
SIGN(X)-------------得到数字符号
EXP(X)-------------计算e的x次方;
PI()----------返回圆周率, 默认7位
TRUNCATE(X, Y)---------返回x,保留小数点后y位
SQRT(x)----------返回非负数x的二次方根
LOG(x)----------返回x的基数为2的对数
LOG10(x)-----------返回x的基数为10的对数
RADIANS(x)----------将角度转换为弧度
DEGREES(x)-----------将弧度转化为角度
SIN(x)---------------返回x的正弦, 其中x在弧度中被给定
ASIN(x)----------------返回x的反正弦, 若x不在-1到1之间的值, 则返回NULL
(COS, ACOS, TAN, ATAN, COT等类似)
2. 字符串函数
CHAR_LENGTH(s)-----------返回字符串s的字符数
LENGTH(s)------------------返回s的长度, 单位为字节, 一个多字节字符算作多个字节
CONCAT(s1, s2, .....)----------------返回结果为连接参数(s1, s2, ....)产生的字符串, 若有一个参数为NULL,
则返回NULL.如果所有参数均为非二进制, 则返回结果为非二进制,
若有一个参数为二进制, 则返回结果为二进制字符串.一个数字参数转化为
与之相等的二进制字符串格式, 若要避免这种情况, 可以使用显式类型CAST,
如: SELECT CONCAT(CAST(int_col AS CHAR), char_col);
CONCAT_WS(x, s1, s2, .....)------------同CONCAT()函数, 但是每个字符串要直接加上x
INSERT(s1, x, len, s2)---------------将s2替换s1的x位置开始, 长度为len的字符串
UPPER(s), UCASE(s)------------将s转换为大写
LOWER(s), LCASE(s)-------------将s转换为小写
LEFT(s, n)------------返回字符串s从左边开始的n个字符
RIGHT(s, n)----------返回字符串s从右边开始的n个字符
LPAD(s1, len, s2)------------返回字符串s1, 其左边用s2填补到len字符长度,
假如s1的长度大于len, 则返回s1被缩短至len的长度
RPAD(s1, len, s2)-------------返回字符串s1, 其右边被字符串s2填补至len字符长度,
假如s1的长度大于len, 则返回值被缩短到与len字符相等的长度
LTRIM(s)----------返回字符串s, 开头空格字符被删除
RTRIM(s)----------返回字符串s, 结尾空格字符被删除
TRIM(s)----------去掉s开头和结尾的空格
TRIM(s1 FROM s)----------去掉s中开头和结尾处的字符串s1
REPEAT(s, n)-----------将字符串s重复n次
SPACE(n)------------返回个空格
REPLACE(s, s1, s2)---------用s2代替s中的s1
STRCMP(s1, s2)----比较s1和s2
SUBSTRING(s, n, len)---------获取字符串s中的第n个位置开始长度为len的字符串
MID(s, n, len)--------------同SUBSTRING(s, n, len)
LOCATE(s1, s), POSITION(s1 IN s)---------------从字符串s中获取s1的开始位置
INSTR(s, s1)-------------查找字符串s1在s中的位置, 返回首次出现的位置的索引值
REVERSE(s)----------将字符串s反序
ELT(n, s1, s2, .....)----------返回第n个字符串
EXPORT_SET(bits, on, off[, separator [, number_of_bits ] ] )---------
返回一个字符串, 生产规则如下: 针对bits的二进制格式, 如果其位为1, 则返回一个on值, 为0返回off值, 每个字符用separator
进行分隔, 默认为" , " . number_of_bits指定可用的位数, 默认为64位.
例如: 生成数字182的二进制(10110110)替换格式, 以" @ "作为分隔符, 设置有效位为6位, 其语句如下:
SELECT EXPORT_SET(182, ‘Y‘, ‘N‘, ‘@‘, 6) 其返回结果为: [email protected]@[email protected]@[email protected]
FIFLD(s, s1, s2, ............)-----------返回第一个与字符串s匹配的字符串的位置
FIND_IN_SET(s1, s2)----------返回在字符串s2中与s1相匹配的字符串的位置
MAKE_SET(x, s1, s2, ........)-------------按x的二进制数从s1, s2, .............sn中选取字符串
3. 日期和时间函数
CURDATE(), CURRENT_DATE()----------返回当前日期
CURTIME(), CURRENT_DATE()-----------返回当前时间
NOW(), CURRENT_TIMESTAMP(), LOCALTIME(), SYSDATE(), LOCALTIESTAMP()--------返回当前日期和时间
UNIX_TIMESTAMP()----------以UNIX时间戳的形式返回当前时间,
UNIX_TIMESTAMP(d)---------将时间d以UNIX时间戳的形式返回
FROM_UNIXTIME(d)----------把UNIX时间戳转化为普通时间格式返回
UTC_DATE()-----------返回UTC(国际协调时间)日期
UTC_TIME()------------返回UTC时间
MONTH(d)------------返回日期d中的月份值, 范围为1-12
MONTHNAME(d)--------返回日期d中的月份名称, 如: January, February.....
DAYNAME(d)-----------返回日期d是星期几, 如Monday, Tuesday.....
DAYOFWEEK(d)-----------返回日期d是星期几, 1表示星期日, 2表示星期一......
WEEKDAY(d)-------------返回日期d是星期几, 0表示星期一, 1表示星期二......
WEEK(d)----------计算日期d是本年的第几个星期, 范围是0~53
WEEKOFYEAR(d)-----------计算日期 d 是本年的第几个星期,范围是 1~53
DAYOFYEAR(d)-----------计算日期 d 是本年的第几天
DAYOFMONTH(d)-----------计算日期 d 是本月的第几天
YEAR(d)--------返回年份
QUARTER(d)----------返回日期d是第几季节,返回 1 到 4
HOUR(t)-----------返回 t 中的小时值
MINUTE(t)----------返回 t 中的分钟值
SECOND(t)------------返回 t 中的秒钟值
EXTRACT(type FROM d)------------
从日期 d 中获取指定的值,type 指定返回的值。
type可取值为: MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, SECOND_MICROSECOND
MINUTE_MICROSECOND, MINUTE_SECOND, HOUR_MICROSECOND, HOUR_SECOND, HOUR_MINUTE, DAY_MICROSECOND
DAY_SECOND, DAY_MINUTE, DAY_HOUR, YEAR_MONTH
将时间 t 转换为秒 |