MYSQL中的函数包括:数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数和加密函数等其他函数。
一、数学函数
主要的数学函数有:绝对值函数、三角函数(包含正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在有错误产生时,数学函数将返回空值NULL。
1、绝对值函数 ABS()
abx(x) 返回x的绝对值(正数的绝对值是其本身,负数的绝对值是其相反数)
2、返回圆周率的函数 PI()
pi() 返回圆周率π的值。默认的显示小数位是6位(3.141593 四舍五入)
3、平方根函数 SQRT()
sqrt(x)返回非负数的二次平方根,负数没有平方根返回NULL
4、求余函数 MOD()
mod(x,y) 返回x被y整除后的余数,mod()对于带小数的部分数值也会有作用,它返回除法运算后的精确余数
5、获取整数的函数 CEIL()、CEILING()和FLOOR()
ceil(x)和ceiling(x)意义相同,返回不小于x的最小整数值(注意其中包含负数)
floor(x)返回不大于x的最大整数值(注意其中包含负数)
6、获取随机数的函数RAND()和RAND(x)
rand(x) 返回随机的浮点数v,范围在0到1之间。若指定一个整数参数x,则它被用作种子值,用来产生重复序列。
不带参数的rand()每次产生的随机数是不同的。rand(x)中x的参数相同时,将产生相同的随机数,不同的x产生的随机数不同
7、四舍五入函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)
round(x)返回最接近x的整数,对x的值进行四舍五入。
round(x,y)返回最接近x的数,其值保留到小数点后面y位,对小数位值进行四舍五入。若y为负值则将保留x值到小数点左边y位,保留的小数点左边位数直接保存为0,不进行四舍五入。
truncate(x,y) 返回被舍去至小数点后y位的数字x。若y为0,则结果不带有小数点或不带有小数部分。若y为负数,则截取(归零)x小数点左起y位开始后面所有低位的值。
8、符号函数SIGN(x)
sign(x) 返回参数的符号(即判断这个数是正数、负数或为零),x的值为负、零或正时返回结果依次为-1、0、1。
9、幂运算函数POW(x,y)、POWER(x,y)和EXP(x)
pow(x,y)或者power(x,y)返回x的y次乘方的结果值。当y为负数时返回x的y此乘方结果值的倒数。
exp(x) 返回e(自然常数约为2.718281828459045)的x乘方后的结果值。
10、对数运算函数LOG(x)和LOG10(x)
log(x) 返回x的自然对数,x相对于基数e的对数。其中对数定义域不能为负数,因此log(-x)返回结果为NULL
log10(x) 返回x的基数为10的对数。其中对数定义域不能为负数,因此log(-x)返回结果为NULL
11、角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)
radians(x)将参数x由角度转为弧度。
degrees(x)将参数x由弧度转为角度。
12、正弦函数SIN(x)和反弦函数ASIN(x)
sin(x)返回x正弦,其中x为弧度。
asin(x)返回x的反正弦,即正弦为x的值。若x不在-1到1范围内,则返回NULL。
sin(x)和asin(x)互为反函数。
13、余弦函数COS(x)和反余弦函数ACOS(x)
cos(x)返回x的余弦,其中x为弧度。
acos(x)返回x的反余弦,即余弦为x的值。若x不在-1到1范围内,则返回NULL。
cos(x)和acos(x)互为反函数。
14、正切函数、反正切函数和余切函数TAN(x)、ATAN(x)和COT(x)
tan(x) 返回x的正切,其中x为给定的弧度值。
atan(x) 返回x的反正切,即正切为x的值。
cot(x) 返回x的余切。
tan(x)和atan(x) 互为反函数,cot(x)和tan(x)互为倒函数。
二、字符串函数
MYSQL中字符串函数有:计算字符串长度函数、字符串合并函数、字符串替换函数、字符串比较函数、查找指定字符串位置函数等。
15、计算字符串字符数的函数和字符串长度的函数CHAR_LENGTH(str)、LENGTH(str)
char_length(str) 返回字符串所包含的字符个数。一个多字节字符算作一个单字符
length(str) 返回值为字符串的字节长度,使用utf8编码字符集,一个汉字算作3个字节,一个数字或字母算作一个字节。
16、合并字符串函数CONCAT(s1,s2,...)、CONCAT_WS(x,s1,s1,...)
concat() 返回结果为连接参数产生的字符串,支持一个或多个参数。若任何一个参数为NULL,则返回结果为NULL。如果所有参数为非二进制字符串,则结果为非二进制字符串。如果参数中包含有二进制字符串,则结果为一个二进制字符串。
concat_ws() 是concat()的特殊形式。第一个参数是其它参数的分隔符,分隔符可以是一个字符串,也可以是其它参数。如果分隔符为NULL则结果也为NULL,函数会忽略任何分隔符参数后的NULL值
17、替换字符串函数 INSERT(s1,x,len,s2)
insert(s1,x,len,s2) 将s1字符串从x位开始的len为长度字符串替换为s2。如果x超过字符串长度,则返回原字符串。假如len的长度大于其他字符串长度,则从x开始替换。若任何一个参数为NULL,则结果为NULL。
18、字母大小写转换函数 LOWER(str)、LCASE(str)、UPPER(str)、UCASE(str)
lower(str)、lcase(str) 将字符串str全部转换为小写字符串
upper(str)、ucase(str) 将字符串str全部转换为大写字符串
19、获取指定长度的字符串函数 LEFT(s,n)、 RIGHT(s,n)
left(s,n) 返回字符串s开始最左边n个字符
right(s,n) 返回字符串s开始最右边的n个字符
20、填充字符串函数 LPAD(s1,len,s2)、RPAD(s1,len,s2)
lpad(s1,len,s2) 返回字符串s1,其左边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回s1被截取至len长度的字符串
prad(s1,len,s2) 返回字符串s1,其右边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回s1被截取至len长度的字符串
21、删除空格的函数 LTRIM(str)、RTRIM(str)、TRIM(str)
ltrim(str) 删除字符串str最左侧的空格
rtrim(str) 删除字符串str最右侧的空格
trim() 删除字符串str所有的空格
22、删除指定字符串函数 TRIM(s FROM str)
trim(s from str) 删除字符串str两端所有的子字符串s,中间不删除,s为可选项,在未指定情况下,删除空格
23、重复生成字符串函数 REPEAT(s,n)
repeat(str,n) 返回一个由str字符串n次重复组成的字符串。若n<=0,则返回空字符串。若str或n为NULL,则返回NULL
24、空格函数 SPACE(n)
space(n) 返回一个由n个空格组成的字符串。
25、字符串替换函数 REPLACE(str,s1,s2)
replace(str,s1,s2) 使用字符串s2替换字符串str中所有的字符串s1
26、比较字符串大小的函数 STRCMP(str1,str2)
strcmp(str1,str2) 比较字符串str1和str2的大小。若所有字符串均相同,则返回0;str1小于str2,则返回-1,其他情况返回1
27、获取子串的函数 SUBSTRING(str,n,len)和 MID(str,n,len)
substring(str,n,len) 完整参数形式情况下,从字符串str起始位置n返回一个长度同len字符相同的str的子字符串。n可以为负值,则起始位置位于字符串str的倒数n个字符
mid(str,n,len) 与 substring(str,n,len)作用相同
注:如果对len使用的是一个小于1的值,则结果始终为空字符串
28、查找子串开始位置的函数 LOCATE(str1,str)、POSITION(str1 IN str)、INSTR(str,str1)
locate(str1,str)
position(str1 in str)
instr(str,str1)
三个函数作用相同,返回字符串str1在字符串str的开始位置
29、字符串逆序函数 REVERSE(str)
reverse(str) 将字符串str顺序进行反转
30、返回指定位置字符串的函数 ELT(n,字符串1,字符串2,字符串3,...,字符串n)
elt(n,str1,str2,...,strn) 若n为1,则返回str1。n为2,返回str2,以此类推。若n小于1或大于参数的数目,则返回NULL
31、返回指定字符串位置的函数 FIELD(str,str1,str2,...)
field(str,str1,str2,...) 返回字符串str在字符串列表str1,str2,... 中第一次出现的位置,找不到str或str为NULL,则返回0
32、返回子串位置的函数 FIND_IN_SET(str1,str)
find_in_set(str1,str) 返回字符串str1在字符串列表str中出现的位置,字符串列表是由一个或多个逗号分开的字符串组成的列表。若没找到则为0。若任一参数为NULL,则返回值为NULL。第一个参数包含逗号则次函数无法正常运行
33、选取字符串的函数 MAKE_SET(x,str1,str2,...)
make_set(x,str1,str2,...) 返回由x的二进制数指定的相应的字符串组成的字符串,str1对应比特1,s2对应比特01,以此类推。str1,str2,...中的NULL值不会被添加到结果中
三、日期和时间函数
34、获取当前日期的函数和获取当前时间的函数 CURDATE()、CURRENT_DATE()、CURTIME()、CURRENT_TIME()
curdate()和current_date() 函数作用相同,返回当前日期按照"YY-MM-DD"或"YYMMDD"格式返回,具体格式根据函数用在字符串或数字语境而定。
curtime()和current_time() 函数作用相同,将当前时间按照"HH:MM:SS"或"HHMMSS"格式返回,具体格式根据函数用在字符串或数字语境而定
35、获取当前日期和时间函数 CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYADATE()
current_timestamp()、localtime()、now()、syadate() 函数作用相同,均返回当前日期和时间值,格式为"YY-MM-DD HH:MM:SS" 或"YYMMDDHHMMSS",具体格式根据函数用在字符串或数字语境而定
36、UNIX时间戳函数 UNIX_TIMESTAMP(date)、FROM_TIMESTAMP(date)
unix_timestamp(date) 若无参数调用,则返回一个unix时间戳(1970-01-01 00:00:00之后的秒数)作为无符号整数。date可以是一个DATE字符串、DATETIME字符串、TIMESTAMP或一个当地时间的YYMMDD或YYYYMMDD格式的数字
from_unixtime(date) 函数把unix时间戳转换为普通格式的时间,与unix_timestamp()互为反函数
37、返回UTC日期的函数和返回UTC时间的函数 UTC_DATE()、UTC_TIME()
utc_date() 返回当前UTC(世界标准时间)日期值,其格式为"YYYY-MM-DD"或"YYYYMMDD",具体格式根据函数用在字符串或数字语境而定
utc_time() 返回当前UTC(世界标准时间)时间值,其格式为"HH-MM-SS"或"HHMMSS",具体格式根据函数用在字符串或数字语境而定
38、获取月份的函数 MONTH(date)、MONTHNAME(date)
month(date) 函数返回date对应的月份,范围值0-12
monthname(date) 函数返回date对应月份的英文全名
39、获取星期的函数 DAYNAME(date)、DAYOFWEEK(date)、WEEKDAY(date)
dayname(date) 函数返回date对应工作日的英文名称。
dayofweek(date) 函数返回date对应的一周中的索引。1表示周日,2表示周一...,7表示周六
weekday(date) 函数返回date对应的工作日索引 0表示周一,1表示周二...,6表示周日
40、获取星期数的函数 WEEK(date)、WEEKOFYEAR(date)
week(date) 计算日期date是一年中的第几周。week()的双参数形式允许指定该星期是否起始于周日回周一,以及返回值的范围是否从0-53或从1-53。若第二参数被省略,则使用default_week_format()系统自变量的值。参考下表:
weekofyear(date) 计算某天位于一年内的第几周,范围是从1-53。相当于week(date,3)
41、获取天数的函数 DAYOFYEAR(date)、DATOFMONTH(date)
dayofyear(date) 函数返回date是一年中的第几天,范围1-366
dayofmonth(date) 函数返回date是一月中的第几天,范围是1-31
42、获取年度、季度、小时、分钟和秒钟的函数 YEAR(date) QUARTER(date) MINUTE(time) SECOND(time)
year(date) 返回date对应的年份,范围1970-2069
quarter(date) 返回date对应一年的季度值,范围1-4
minute(time) 返回time对应的分钟数,范围是从0-59
second(time) 返回time对应的秒钟,范围是从0-59
43、获取日期的指定值的函数 EXTRACT(type from date)
extract(type from date) 函数所使用的时间间隔类型说明符同DATE_ADD()或DATE_SUB()的相同,但它从日期中提取一部分,而不是按执行日期运算
44、时间和秒钟转换的函数 TIME_TO_SEC(time)、SEC_TO_TIME(seconds)
time_to_sec(time) 返回已转换秒的time参数。转换公式:小时*3600+分钟*60+秒
sec_to_time(seconds) 返回被转换为小时、分钟和秒数的seconds参数值,其格式为"HH:MM:SS"或"HHMMSS",具体格式根据函数用在字符串或数字语境而定
45、计算日期和时间的函数
计算日期和时间的函数有:DATE_ADD() ADDDATE() DATE_SUB() SUBDATE() ADDTIME() SUBTIME()和DATE_DIFF()
date_add(date,INTERVAL expr type) 和 date_sub(date,INTERVAL expr type) 其中,date是一个DATETIME或DATE值,用来指定起始时间。expr是一个表达式,用来指定从起始日期添加或减去的时间间隔值。expr是一个字符串;对于负值的时间间隔,它可以以一个负号开头。type为关键词,它指示表达式被解释的方式。type和expr关系如下表。若date参数是一个DATE值,计算只会包括YEAR、MONTH和DAY的部分(即没有时间部分),其结果是一个DATE值。否则结果为DATETIME值
1.1、date_add(date,INTERVAL expr type)、adddate(date,INTERVAL expr type) 两个函数作用相同,执行日期的加法运算
1.2、date_sub(date,INTERVAL expr type)、subdate(date,INTERVAL expr type) 两个函数作用相同,执行日期的减法运算
1.3、addtime(date,expr) 函数将expr值添加到date,并返回修改后的值,date是一个日期或者日期时间表达式,而expr是一个时间表达式
1.4、subtime(date,expr) 函数中date减去expr值,并返回修改后的值,date是一个日期或者日期时间表达式,而expr是一个时间表达式
1.5、datediff(date1,date2) 返货起始时间date1和结束时间date2之间的天数(date1-date2)。date1和date2为日期或date-and-time表达式。计算只会用到这些值得日期部分
46、将日期和时间格式转换的函数 DATE_FORMAT(date,format)、TIME_FROMAT(time,format)、GET_FORMAT(val_type,format_type)
date_format(date,format) 根据format指定的格式显示date值。主要format格式如下表:
time_format(time,format) 只处理时间值,根据format字符串安排time值得格式。format字符串可能仅会处理包含小时、分钟和秒的格式说明符,其他说明符产生一个NULL或者0。若time值包含一个大于23的小时部分,则%H和%k小时格式符会产生一个大于0.23的通常指范围
get_format(val_type,format_type) 返回日期时间字符串的显示格式,val_type表示日期数据类型,包括DATE DATETIME和TIME;format_type表示格式化显示类型,包括EUR INTERVAL ISO JIS USA。get_format根据两个值类型组合返回的字符串格式如下表:
五、条件判断函数
条件判断函数也称控制流程函数,根据满足的条件的不同,执行相应的流程。
47、IF(expr,v1,v2) 函数
if(expr,v1,v2) 如果表达式expr的结果是TRUE,则IF函数的返回值为v1,否则返回值为v2。IF函数的返回值为数字值或字符串值。具体情况视所在语境而定。
注:如果v1或v2中只有一个明确是NULL,则IF函数的结果类型为非NULL表达式的结果类型
48、IFNULL(v1,v2) 函数
ifnull(v1,v2) 假如v1不为NULL,则该函数返回值为v1,否则返回v2。 IFNULL函数的返回值为数字值或字符串值。具体情况视所在语境而定。
49、CASE 函数
语法1:CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END
该函数表示,如果expr表达式的结果等于某个vn,则返回对应位置THEN后面的结果。如果与所有值都不相等,则返回ELSE后面的rn。
语法2: CASE WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END
该函数表示,某个vn的值为TRUE,执行对应位置THEN后面的结果。如果与所有值都不相等,则返回ELSE后面的rn。
六、系统信息函数
MySQL中的系统信息有:数据库的版本号、当前用户名和连接数、系统字符集、最后一个自动生成的ID等。
50、获取MySQL版本号、连接数和数据库名的函数
version() 返回指示MySQL服务器版本的字符串。这个字符串使用uft8字符集
connection_id() 返回MySQL服务器当前的连接次数。每个连接都有各自唯一的ID
show processlist 该命令的输出结果显示了那些线程在运行(只列出前100条),不仅可以查看当前连接数,还可以查看当前的连接状态,帮助识别有问题的查询语句等。root账号能看到所有连接,普通账号只能看到自己占用的连接。
show full processlist 全部列出
database() 和 schema() 返回使用utf8字符集的默认(当前)数据库名
51、获取用户名的函数
user()、current_user()、system_user()、session_user() 这几个函数返回当前被MySQL服务器验证的用户名和主机名组合。这个值符合确定当前登录用户存取权限的MySQL账户。一般情况下这个值返回结果相同
52、获取字符串的字符集和排序方式的函数
charset(str) 返回字符串str自变量的字符集
collation(str) 返回字符串str的字符排列方式
53、获取最后一个自动生成的ID值的函数
last_insert_id() 返回最后一个INSERT或UPDATE为AUTO_INCREMENT列自动生成的值。
七、加密函数
加密函数主要用来对数据进行加密和界面处理,以保证某些重要数据不被别人获取。这些函数在保证数据库安全时非常有用。
54、加密函数 PASSWORD(str)
password(str) 从原明文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL。
注:password()函数在mysql服务器的鉴定系统中使用,不应该用在个人应用程序中。password()加密是单向的(不可逆)。
55、加密函数 MD5(str)
md5(str) 为字符串算出一个MD5 128比特校验和。该值已32位十六进制数字的二进制字符串形式返回,当参数为NULL时,返回NULL。
56、加密函数 ENCODE(str,pswd_str)
encode(str,pswd_str) 使用pswd_str作为密码来加密str。使用decode()解密结果,结果是一个和strc=长度相同的二进制字符串
57、解密函数 DECODE(crypt_str,pswd_str)
decode(crypt_str,pswd_str) 使用pswd_str作为密码,解密加密字符串crypt_str,crypt_str是由encode()返回的字符串。
八、其他函数
58、格式化函数 FORMAT(x,n)
format(x,n) 将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串形式返回。若n为0,则返回结果不含小数部分。
59、不用进制的数字进行转换的函数
conv(N,from_base,to_base) 该函数进行不同进制数间的转换。返回值为数值N的字符串表示,由from_base进制转换为to_base进制。如有任意一个参数为NULL,则返回值为NULL。自变量N被理解为一个整数,但可以被指定为一个整数或字符串。最小基数为2,最大基数则为36.
60、IP地址与数字相互转换的函数
inet_aton(expr) 给定一个字符串IP地址,返回代表该IP地址的数字网路地址,地址可以是4或8比特地址。
inet_ntoa(expr) 给定一个数字网络地址(4或8比特),返回字符串IP地址。
标签:返回,函数,date,str,MYSQL,字符串,NULL From: https://www.cnblogs.com/xh-xiaohan/p/17040543.html