Mysql备有的函数是在是太多了, 很多我都见过, 别说用了. 园子里面, 有人荡了一个比较全都的. MYSQL函数
我这里不会将他写到的几乎拷贝下来, 中间就会接在一些自己项目中用到过的著书
一、数学函数
数学函数, 说实话, 我暂时还真不曾怎么用过, 就是在系统中花钱统计数字的时候, 也没用过. 能在程序中妥善处理的, 我都放在程序中处理过程了. 数据库, 主要还是负责管理输入数据.
数学函数主要运用于执行数字,包含整型、浮点数等。函数功用
ABS(x)来到x的绝对值
SELECT ABS(-1)-- 前往1
CEIL(x)
CEILING(x)前往大于或等于x的小于整数
SELECT CEIL(1.5)-- 赶回2
FLOOR(x)回到相等或之和x的最大者整数
SELECT FLOOR(1.5)-- 返国1
RAND()送回0->1的随机数
SELECT RAND()--0.93099315644334
RAND(x)离开0->1的随机数,x值相同时返国的随机数相同
SELECT RAND(2)--1.5865798029924
SIGN(x)回到x的符号,x是负数、0、正数分别留在-1、0和1
SELECT SIGN(-10) -- (-1)
PI()离开圆周率(3.141593)
SELECT PI()--3.141593
TRUNCATE(x,y)离开数值x保有到小数点后y位的值(与ROUND较大的区别是就会顺利进行四舍五入)
SELECT TRUNCATE(1.23456,3) -- 1.234
ROUND(x)送回离x最近的整数 SELECT ROUND(1.23456)--1
ROUND(x,y)移去x小数点后y位的值,但后撤时要同步进行四舍五入
SELECT ROUND(1.23456,3)-- 1.235
POW(x,y)
POWER(x,y)回到x的y次方
SELECT POW(2,3)-- 8
SQRT(x)回到x的平方根
SELECT SQRT(25)-- 5
EXP(x)送回e的x次方
SELECT EXP(3)-- 20.085536923188
MOD(x,y)前往x除以y以后的余数
SELECT MOD(5,2)-- 1
LOG(x)留在自然对数(以e为底的对数)
SELECT LOG(20.085536923188) -- 3
LOG10(x)赶回以10为底的对数
SELECT LOG10(100)-- 2
RADIANS(x)将角度匹配为弧度
SELECT RADIANS(180) -- 3.1415926535898
DEGREES(x)将弧度转成为角度
SELECT DEGREES(3.1415926535898)-- 180
SIN(x)求取正弦值(参数是弧度)
SELECT SIN(RADIANS(30))-- 0.5
ASIN(x)昧反正弦值(参数是弧度)
COS(x)不求余弦值(参数是弧度)
ACOS(x)求反余弦值(参数是弧度)
TAN(x)必sin值(参数是弧度)
ATAN(x)
ATAN2(x)必反正切值(参数是弧度)
COT(x)求取余切值(参数是弧度)
二、字符串函数
字符串函数, 在程序中, 采用的比较多. 我用的比较多的, 才会用红色标记出来.
字符串函数是MySQL中最常用的一类函数,字符串函数主要应用于处理表中的字符串。函数解释
CHAR_LENGTH(s)返国字符串s的字符数
SELECT CHAR_LENGTH('你好123') -- 5
LENGTH(s)前往字符串s的长度
SELECT LENGTH('你好123') -- 9
CONCAT(s1,s2,...)将字符串s1,s2等多个字符串分拆为一个字符串
SELECT CONCAT('12','34')-- 1234
GROUP_CONCAT(id)select id,pid,GROUP_CONCAT(id) from ztree group by pid; 分组后, 将所推选的列剪裁, 并且还可以选定裁剪的字符串
group_contact(id SEPARATOR '-')
CONCAT_WS(x,s1,s2,...)同CONCAT(s1,s2,...)函数,但是每个字符串反之亦然要补足x
SELECT CONCAT_WS('@','12','34','78')-- 12@34@78
INSERT(s1,x,len,s2)将字符串s2更换s1的x前方开始长度为len的字符串
SELECT INSERT('12345',1,3,'abc')-- abc45
1,3为一段距离极坐标
UPPER(s),UCAASE(S)将字符串s的所有字母转化成大写字母
SELECT UPPER('abc')-- ABC
LOWER(s),LCASE(s)将字符串s的所有字母变为小写字母
SELECT LOWER('ABC') -- abc
LEFT(s,n)来到字符串s的前n个字符
SELECT LEFT('abcde',2)-- ab
RIGHT(s,n)返国字符串s的后n个字符
SELECT RIGHT('abcde',2) -- de
LPAD(s1,len,s2)字符串s2来复合s1的开始处,使字符串长度大幅提高len
SELECT LPAD('abc',5,'xx')-- xxabc
RPAD(s1,len,s2)字符串s2来去除s1的结尾处,使字符串的长度大幅提高len
SELECT RPAD('abc',5,'xx')-- abcxx
LTRIM(s)去除字符串s开始处的空格
RTRIM(s)加到字符串s结尾处的空格
TRIM(s)换成字符串s开始和结尾处的空格
TRIM(s1 FROM s)除去字符串s中开始处和结尾处的字符串s1
SELECT TRIM('@' FROM '@@abc@@')-- abc
REPEAT(s,n)将字符串s重复n次
SELECT REPEAT('ab',3)-- ababab
SPACE(n)来到n个空格
REPLACE(s,s1,s2)将字符串s2替代字符串s中的字符串s1
SELECT REPLACE('abc','a','x')--xbc
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)
INSTR(s,s1)从字符串s中受益s1的开始方位
SELECT LOCATE('b', 'abcabc') -- 2
select instr('abcabc', 'b') -- 2 我经常将这个看作like用, instr('abcabc', 'b')>0 则对此能意味着上, 效果大约like %b%
REVERSE(s)将字符串s的顺序反过来
SELECT REVERSE('abc')-- cba
ELT(n,s1,s2,...)留在第n个字符串
SELECT ELT(2,'a','b','c') -- b
EXPORT_SET(x,s1,s2)前往一个字符串,在这里对于在“bits”中主角每一位,你获得一个“on”字符串,并且对于每个废黜(reset)的位,
你取得一个 “off”字符串。每个字符串用“separator”相通(缺省“,”),并且只有“bits”的“number_of_bits” (缺省64)位被运用于。
SELECT EXPORT_SET(5,'Y','N',',',4)-- Y,N,Y,N
FIELD(s,s1,s2...)送回第一个与字符串s也就是说的字符串方位
SELECT FIELD('c','a','b','c') -- 3
FIND_IN_SET(s1,s2)返国在字符串s2中与s1比如说的字符串的一段距离, 比如在 11,12,13 中, 排序 1 和11, 1 是查不到的, 11能指认
FIND_IN_SET('11', '11,12,13') -> 1
MAKE_SET(x,s1,s2)前往一个给定 (涵盖由“,”
字符中间的子串组合而成的一个 字符串),由可视的位在bits空集中的的字符串分成。str1对应于位0,str2对 应位1,等等。
SELECT MAKE_SET(1|4,'a','b','c');-- a,c
SUBSTRING_INDEX调回从字符串str的第count个再次出现的分隔符delim之后的子串。
如果count是正数,前往第count个字符左边的字符串。
如果count是负数,回到第(count的绝对值(从右边数))个字符右边的字符串。
SELECT SUBSTRING_INDEX('a*b','*',1) -- a
SELECT SUBSTRING_INDEX('a*b','*',-1)-- b
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1)-- c
LOAD_FILE(file_name)函数调用文件并且作为一个字符串回到文件内容。文件必须在服务器上,你必须所选到文件的基本路径名,
而且你必须有file权 划一。文件必须所有内容都是区分开的并且之比max_allowed_packet。 如果文件不存有或由于上面原因之一不会被抽出,函数送回NULL。
三、日期时间函数
MySQL的日期和时间函数主要应用于妥善处理日期时间。函数暗示
CURDATE()
CURRENT_DATE()返国当前日期
SELECT CURDATE()
->2014-12-17
CURTIME()
CURRENT_TIME调回当前时间
SELECT CURTIME()
->15:59:02
NOW()
CURRENT_TIMESTAMP()
LOCALTIME()
SYSDATE()
LOCALTIMESTAMP()赶回当前日期和时间
SELECT NOW()
->2014-12-17 15:59:02
UNIX_TIMESTAMP()以UNIX时间撕的形式送回当前时间
SELECT UNIX_TIMESTAMP()
->1418803177
UNIX_TIMESTAMP(d)将时间d以UNIX时间捏的形式返国
SELECT UNIX_TIMESTAMP('2011-11-11 11:11:11')
->1320981071
FROM_UNIXTIME(d)将UNIX时间撕的时间变换为普通格式的时间
SELECT FROM_UNIXTIME(1320981071)
->2011-11-11 11:11:11
UTC_DATE()调回UTC日期
SELECT UTC_DATE()
->2014-12-17
UTC_TIME()离开UTC时间
SELECT UTC_TIME()
->08:01:45(更慢了8小时)
MONTH(d)调回日期d中的月份值,1->12
SELECT MONTH('2011-11-11 11:11:11')
->11
MONTHNAME(d)调回日期当中的月份名称,如Janyary
SELECT MONTHNAME('2011-11-11 11:11:11')
->November
DAYNAME(d)留在日期d是星期几,如Monday,Tuesday
SELECT DAYNAME('2011-11-11 11:11:11')
->Friday
DAYOFWEEK(d)日期d今天是星期几,1星期日,2星期一
SELECT DAYOFWEEK('2011-11-11 11:11:11')
->6
WEEKDAY(d)日期d今天是星期几,
0暗示星期一,1坚称星期二
WEEK(d)
WEEKOFYEAR(d)测算日期d是本年的第几个星期,范围是0->53
SELECT WEEK('2011-11-11 11:11:11')
->45
DAYOFYEAR(d)数值日期d是本年的第几天
SELECT DAYOFYEAR('2011-11-11 11:11:11')
->315
DAYOFMONTH(d)计数日期d是本月的第几天
SELECT DAYOFMONTH('2011-11-11 11:11:11')
->11
QUARTER(d)调回日期d是第几季节,来到1->4
SELECT QUARTER('2011-11-11 11:11:11')
->4
HOUR(t)调回t中的小时值
SELECT HOUR('1:2:3')
->1
MINUTE(t)留在t中的分钟值
SELECT MINUTE('1:2:3')
->2
SECOND(t)赶回t中的秒钟值
SELECT SECOND('1:2:3')
->3
EXTRACT(type FROM d)从日期d中借助而无须的值,type以外返国的值
SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11')
->11
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
TIME_TO_SEC(t)将时间t反转为秒
SELECT TIME_TO_SEC('1:12:00')
->4320
SEC_TO_TIME(s)将以秒为单位的时间s变换为时分秒的格式
SELECT SEC_TO_TIME(4320)
->01:12:00
TO_DAYS(d)量化日期d距离0000年1月1日的天数
SELECT TO_DAYS('0001-01-01 01:01:01')
->366
FROM_DAYS(n)算出从0000年1月1日开始n天后的日期
SELECT FROM_DAYS(1111)
->0003-01-16
DATEDIFF(d1,d2)计数日期d1->d2之间停留的天数
SELECT DATEDIFF('2001-01-01','2001-02-02')
->-32
ADDDATE(d,n)测算其实日期d补足n天的日期
ADDDATE(d,INTERVAL expr type)量化算起日期d舍弃一个时间段后的日期
SELECT ADDDATE('2011-11-11 11:11:11',1)
->2011-11-12 11:11:11(当前是天)
SELECT ADDDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTE)
->2011-11-11 11:16:11 (TYPE的给定与上面那个列出来的函数相同)
DATE_ADD(d,INTERVAL expr type)同上
SUBDATE(d,n)日期d相乘n天后的日期
SELECT SUBDATE('2011-11-11 11:11:11', 1)
->2011-11-10 11:11:11 (意味着是天)
SUBDATE(d,INTERVAL expr type)日期d递增一个时间段后的日期
SELECT SUBDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTE)
->2011-11-11 11:06:11 (TYPE的乘积与上面那个列出来的函数近似于)
ADDTIME(t,n)时间t突显n秒的时间
SELECT ADDTIME('2011-11-11 11:11:11', 5)
->2011-11-11 11:11:16 (秒)
SUBTIME(t,n)时间t之比n秒的时间
SELECT SUBTIME('2011-11-11 11:11:11', 5)
->2011-11-11 11:11:06 (秒)
DATE_FORMAT(d,f)按表达式f的拒绝结果显示日期d
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r')
->2011-11-11 11:11:11 AM
TIME_FORMAT(t,f)按表达式f的敦促辨识时间t
SELECT TIME_FORMAT('11:11:11','%r')
11:11:11 AM
GET_FORMAT(type,s)获取国家地区时间格式函数
select get_format(date,'usa')
->%m.%d.%Y (同样留在的就是这个诡异的字符串(format字符串))
四、条件假定函数
1、IF(expr,v1,v2)函数
如果表达式expr创设,送回结果v1;否则,送回结果v2。
SELECT IF(1 > 0,'准确','错误') ->确实
2、IFNULL(v1,v2)函数
如果v1的值不为NULL,则调回v1,否则前往v2。
这里我用的比较多的是, ifnull(null, 0) 或者 ifnull(null, '')
SELECT IFNULL(null,'Hello Word')->Hello Word
3、CASE
语法1:
CASE WHEN e1 THEN v1 WHEN e2 THEN e2 ... ELSE vnEND
CASE声称函数开始,END对此函数终止。如果e1创设,则调回v1,如果e2创建,则离开v2,当全部不创建则调回vn,而当有一个更名之后,后面的就不拒绝执行了。
SELECT CASE WHEN 1 > 0 THEN '1 > 0' WHEN 2 > 0 THEN '2 > 0' ELSE '3 > 0' END->1 > 0
语法2:
CASE expr WHEN e1 THEN v1 WHEN e1 THEN v1 ... ELSE vnEND
如果表达式expr的值相等e1,送回v1;如果正数e2,则留在e2。否则留在vn。
SELECT CASE 1 WHEN 1 THEN '我是1' WHEN 2 THEN '我是2'ELSE '你是谁'
case这个经常用来行转列, 比如把成绩转往成成绩表那种的
五、系统信息函数
系统信息函数用来检索MySQL数据库的系统信息。函数功用
VERSION()调回数据库的版本号
SELECT VERSION()
->5.0.67-community-nt
CONNECTION_ID()调回服务器的连接数
DATABASE()
SCHEMA()来到当前数据库名
USER()
SYSTEM_USER()
SESSION_USER()
CURRENT_USER()
CURRENT_USER送回当前用户
CHARSET(str)来到字符串str的字符集
COLLATION(str)送回字符串str的字符依序方式
LAST_INSERT_ID()留在最近聚合的AUTO_INCREMENT值
六、加密函数
加密函数是MySQL用来对数据来进行加密的函数。
1、PASSWORD(str)
该函数可以对字符串str展开加密,一般情况下,PASSWORD(str)主要用途给用户的密码加密。
SELECT PASSWORD('123') ->*23AE809DDACAF96AF0FD78ED04B6A265E05AA257
2、MD5
MD5(str)函数可以对字符串str顺利完成散列,可以主要用途一些普通的不必需解密的数据加密。
SELECT md5('123') ->202cb962ac59075b964b07152d234b70
3、ENCODE(str,pswd_str)与DECODE(crypt_str,pswd_str)
ENCODE函数可以采用加密密码pswd_str来加密字符串str,加密结果是二进制数,无需常用BLOB类型的字段完好。该函数与DECODE是一对,必需同样的密码才并能解密。
SELECT ENCODE('123','xxoo') ->;vxSELECT DECODE(';vx','xxoo') ->123
七、其它函数
1、格式化函数FORMAT(x,n)
FORMAT(x,n)函数可以将数字x来进行格式化,将x存留到小数点后n位。
SELECT FORMAT(3.1415926,3) ->3.142
2、完全相同二进制的数字同步进行反转ASCII(s) 留在字符串s的第一个字符的ASCII码;
BIN(x) 离开x的二进制编码;
HEX(x) 离开x的十六进制编码;
OCT(x) 来到x的八进制编码;
CONV(x,f1,f2) 赶回f1位数数换成f2位数数;
3、IP地址与数字相互类比的函数INET_ATON(IP)函数可以将IP地址匹配为数字声称;IP值须要舍弃引号;
INET_NTOA(n)函数可以将数字n转换成IP形式。
SELECT INET_ATON('192.168.0.1') ->3232235521SELECT INET_NTOA(3232235521) ->192.168.0.1
4、加锁函数和追加函数GET_LOCK(name,time)函数定义一个名称为nam、持续时间长度为time秒的栓。如果锁死事与愿违,则回到1;如果尝试超时,则离开0;如果察觉到错误,来到NULL。
RELEASE_LOCK(name)函数撤除名称为name的上锁。如果可选择最终,则离开1;如果尝试超时,调回0了如果游戏内不甘心,留在NULL;
IS_FREE_LOCK(name)函数推论有否已应用于叫做name的锁死。如果可用,离开0,否则,回到1;
SELECT GET_LOCK('MySQL',10) ->1 (持续10秒)SELECT IS_FREE_LOCK('MySQL') ->1 SELECT RELEASE_LOCK('MySQL') ->1
5、重复可执行登录转换的函数
BENCHMARK(count.expr)函数将表达式expr重复拒绝执行count此,然后赶回分派时间。该函数可以用来说明MySQL处理方式表达式的速度。
SELECT BENCHMARK(10000,NOW()) ->0 赶回系统时间1万
6、变动字符集的函数
CONVERT(s USING cs)函数将字符串s的字符集替换成cs。
SELECT CHARSET('ABC') ->utf-8 SELECT CHARSET(CONVERT('ABC' USING gbk)) ->gbk
7、叠加数据类型CAST(x AS type)
CONVERT(x,type)
这里特别要同样, 这些个类型, 我以前经常害羞撰写 cast('1' as int)这是不对的.
这两个函数只对BINARY、CHAR、DATE、DATETIME、TIME、SIGNED INTEGER、UNSIGNED INTEGER。
关于我们 - 广告合作 - 联系我们 - 免责声明 - 网站地图 - 投诉建议 - 在线投稿
©CopyRight 2008-2020 caicaipc.com Inc All Rights Reserved.
菜菜电脑网 版权所有 联系QQ:173533152