自学mysql数据库之函数

MySQL函数
Ⅰ、数学函数:

1、绝对值函数ABS(x)和返回圆周率函数PI(),而PI()默认显示小数位数为6


2、平方根函数SQRT(x)和求余函数MOD(x,y),当平方根里的为负数,返回NULL。求余函数对小数也起作用,返回精确余数。


3、获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x)。前两个相同为向上取整,返回一个BIGINT类型。后一个为向下取整,返回一个BIGINT类型。


4、获取随机数的函数RAND()和RAND(x)

【两者都是返回一个0<=v<=1 之间的数。而带参数的,x作为种子,用来产生重复序列。而不带参的每一次产生都不一样。】


5、四舍五入函数ROUND(x)、ROUND(x,y)、TRUNCATE(x,y)

【第一个返回最接近于参数x的整数,对x进行四舍五入。而两个参数的ROUND返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。TRUNCATE与ROUND相似,但他不会四舍五入,直接截取。】


6、符号函数SIGN(x)

返回参数的符号,x值为负、零或正时返回结果依次为-1,0,1;


7、幂运算函数POW(x,y)、POWER(x,y)和EXP(x)

前两个一样,返回x的y次方。后一个返回e的x次方。


8、对数运算函数LOG(x)和LOG10(x)

前者返回x的自然对数。后者为返回以10为基数的对数。


9、角度与弧度相互转换函数RADIANS(x)和DEGREES(x)

前者将x由角度转化成弧度。后者将弧度转化为角度。


10、正弦函数SIN(x)和反正弦函数ASIN(x) 其中[x]都为弧度值。对于ASIN 若x不在-1到1之间,则返回NULL
    余弦函数COS(x)和反余弦函数ACOS(x)
    正切函数、反正切函数和余切函数 TAN(x)、ATAN(x)、COT(x)




Ⅱ、字符串函数:
1、计算字符串字符数的函数和字符串长度的函数
CHAR_LENGTH(str)返回str所包含的字符个数,一个汉字与一个字母或数字一样,算一个字符。

LENGTH(str)返回字符串的字节长度,跟上面的不一样,一个汉字是3个字节,一个数字或字母算一个字节。


2、合并字符串函数CONCAT(s1,s2,...)、CONCAT_WS(x,s1,s2,...)
前者返回结果为连接参数产生的字符串:若任一参数为NULL,则返回值为NULL;若所有参数均为非二进制字符串,则结果为非二进制字符串。若含有任一二进制字符串,则结果为一个二进制的字符串。

后者的x为其他参数的分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值,即CONCAT_WS('*','1',NULL,'2');返回1*2


3、替换字符串的函数INSERT(s1,x,len,s2)

返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符。若x超过字符串的长度或者为负值,则返回值为原始字符串。假如len的长度长于其他字符串的长度,则从位置x开始替换。若任何一个参数为NULL,则返回值为NULL。


4、字母大小写转换函数LOWER(str)或者LCASE(str) 都可以将字符串中的所有字母字符转换成小写。

而UPPER(str)或者UCASE(str)都可以将字符串转换成大写。


5、获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)

前者返回字符串s开始的最左边n个字符,后者返回s最右边n个字符。


6、填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)
前者返回s1左边被用s2填充到len长度的字符串。当len长度小于s1的长度,则s1 输出从左到右len个字符。例如:
LPAD('hello',4,'?') 返回hell,LPAD('hello',10,'?') 返回?????hello
后者为在s1的右边填充s2至len的长度。

RPAD('hello',4,'?') 返回hell,RPAD('hello',10,'?') 返回hello?????


7、删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)

前者只删除字符串左边的空格,第二个只删除右边的空格,第三个删除两侧的空格。他们都只是在字符串两侧操作,而不会影响字符串里面的空格。


8、删除指定字符串的函数TRIM(s1 FROM s)

删除字符串s中两端所有的子字符串s1,s1为可选项。在未指定情况下删除空格。


9、重复生成字符串的函数REPEAT(s,n)

返回一个由重复的字符串s组成的字符串,字符串s的数目等于n,若n<=0,则返回一个空字符串。若s或n为NULL,则返回NULL。


10、空格函数SPACE(n)和替换函数REPLACE(s,s1,s2)
前者返回一个由n个空格组成的字符串。

后者使用s2替代字符串s中所有的字符串s1.


11、比较字符串大小的函数STRCMP(s1,s2)

第一个参数小于第二个,则返回-1;大于,则返回1;相等,则返回0;


12、获取字串的函数SUBSTRING(s,n,len)和MID(s,n,len)

两个作用相同。都是返回在s中第n个开始,len长度的字串。若n为负值,则从s的末尾开始往回数第n个字符,然后再往末尾len长度的子串。若没有指定长度,则第n个字符开始到末尾全部被返回。若len为小于1的值,结果始终为空字符串。


13、匹配子串开始位置的函数 LOCATE(str1,str),POSITION(str1 IN str),INSTR(str,str1)这三个函数功能一样:

返回子字符串str1在字符串str中的开始位置。


14、字符串逆序的函数REVERSE(s)  将字符串s的顺序反转。


15、返回指定位置的字符串的函数 

ELT(N,字符串1,字符串2,字符串3,...,字符串N)若N=1,则返回值为字符串1,若N=2,则返回值为字符串2,以此类推。若N小于1或者大于参数的数目,则返回值为NULL。


16、返回指定字符串位置的函数

FIELD(s,s1,s2,…) 返回字符串s在列表s1,s2,...中第一次出现的位置,在找不到s的情况下,返回值为0。如果s为NULL,则返回值为0,原因是NULL不能同任何值进行同等比较。大小写敏感,切要完全匹配才算相等。


17、返回子串位置的函数   
FIND_IN_SET(s1,s2)  返回字符串s1在字符串列表s2中出现的位置,字符串列表是一个由多个逗号“,”分开的字符串组成的列表。如果s1不在s2或s2为空字符串,则返回0。如果任意一个参数为NULL,则返回值为NULL。
【若第一个参数包含一个逗号“,”时,将无法正常运行。】

FIELD和FIND_IN_SET  作用类似!!!


18、选取字符串的函数 
MAKE_SET(x,s1,s2,...)返回由x的二进制数指定的相应位的字符串组成的字符串,s1对应比特1,s2对应比特01,以此类推。s1,s2...中的NULL值不会被添加进结果中。
当x为0时,返回空字符串。




Ⅲ、日期和时间函数
1、获取当前日期的函数和获取当前时间的函数
CURDATE()和CURRENT_DATE()函数相同,返回当前日期:‘YYYY-MM-DD'或YYYYMMDD 格式。具体格式根据函数用在字符串或是数字语境中而定。【比如:用CURRENT_DATE()+0  可以返回数字格式】
CURTIME()和CURRENT_TIME()函数相同,返回当前时间:'HH:MM:SS'或 HHMMSS 的格式。具体也是根据函数的语境而定。


2、获取当前日期和时间的函数
CURRENT_TIMESTAMP()、LOCALTIME()、NOW()和SYSDATE() 4个函数的作用相同,均返回当前日期和时间值,格式为'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS,具体格式也是根据语境而定。


3、UNIX时间戳函数
UNIX_TIMESTAMP(date)
若无参调用,则返回一个现在时间到’1970-01-01 00:00:00‘的Unix时间戳作为无符号整数;若有参数date(可以是DATE字符串,DATETIME字符串,TIMESTAMP或一个当地时间的YYMMDD或YYYYMMDD格式的数字)
则返回这个参数到’1970-01-01 00:00:00‘的Unix时间戳。即:距离那个时间过了多少秒
FROM_UNIXTIME(date) 
把UNIX时间戳转换成普通格式时间:与UNIX_TIMESTAMP(date)互为反函数;


4、返回UTC日期的函数和返回UTC时间的函数
UTC_DATE()函数返回当前UTC(时间标准时间)日期值,其格式为’YYYY-MM-DD'或YYYYMMDD,具体根据语境。即当前时区的日期值。
UTC_TIME()函数返回当前UTC时间值,格式‘HH:MM:SS'或HHMMSS 具体根据语境。当前时区


5、获取月份的函数MONTH(date)和MONTHNAME(date)
前者返回一个月份数字,后者返回一个月份的英文全名


6、获取星期的函数DAYNAME(date)、DAYOFWEEK(date)和WEEKDAY(date)
前者返回工作日的英文全称。中者返回一周中的索引:1表示周日,2表示周一,...,7表示周六。后者返回工作日的索引:0表示周一,1表示周二,...6表示周日。


7、获取星期数的函数WEEK(date)和WEEKOFYEAR(date)
前者计算日期date是一年中的第几周。双参数形式允许指定该星期是否起始于周日或周一,以及返回值的范围是否为从0到53或从1到53。若Mode参数被省略,则使用系统自变量的值。
后者与前者的WEEK(date,3)返回的值相同。


8、获取天数的函数 DAYOFYEAR(date) 和 DAYOFMONTH(date)
前者是返回date是一年中的第几天,范围1到366;后者是返回data是一个月中的第几天,范围1到31


9、获取年份、季度、小时、分钟、秒钟的函数
YEAR(date) 返回年份,范围 1970到2069年
QUARTER(date) 返回季度,范围1到4
MINUTE(time) 返回对应的分钟数,范围 0到59
SECOND(time) 返回对应的秒数,范围 0到59


10、获取日期的指定值的函数 EXTRACT(type FROM date)
type的类型:YEAR  YEAR_MONTH  DAY_MINUTE ... 【而DAY_MINUTE 返回日、小时、分钟值】


11、时间和秒钟转换的函数
TIME_TO_SEC(time) 返回已转化为秒的time参数。公式:小时*3600+分钟*60+秒
SEC_TO_TIME(seconds) 返回被转化为小时、分钟和秒数的seconds 参数值,格式:‘HH:MM:SS’或HHMMSS


12、计算日期和时间的函数
DATE_ADD()  ADDDATE()  DATE_SUB()  SUBDATE()  ADDTIME()  SUBTIME()  DATE_DIFF()
1)DATE_ADD(date,INTERVAL expr type) 或者 ADDDATE(date,INTERVAL expr type)作用一样加运算,date包括DATETIME或DATE值。expr指示了表达式,type为表达式被解释的方式。
2)DATE_SUB(date,INTERVAL expr type) 或者 SUBDATE(date,INTERVAL expr type) 减运算
3)ADDTIME(date,expr)将expr值添加进date,expr是一个TIME值。
4)DATEDIFF(date1,date2)返回date1和date2之间的天数,date为DATE或DATETIME格式,但是不会理会TIME的差异,单纯的计算日


13、将日期和时间格式化的函数
DATE_FORMAT(date,format)根据format指定格式显示date值
TIME_FORMAT(time,format)根据format指定格式显示time值,只处理时间值。
GET_FORMAT(val_type,format_type)返回日期时间字符串的显示格式,val_type包括DATE,DATETIME,TIME;format_type包括EUR,INTERVAL,ISO,JIS,USA.
可以在DATE_FORMAT 中用GET_FORMAT 作format
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值