1.字符串函数
#CHAR_LENGTH(str)字符串函数
select CHAR_LENGTH(name) from employee02 where name = '王小明';
#CONCAT(s1,s2,…)返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL
select CONCAT("-","name","data","data01","data02") as aaa;
#CONCAT_WS(x,s1,s2,…)返回多个字符串拼接之后的字符串,每个字符串之间有一个x
select CONCAT_WS("-","name","data","data01","data02") as aaa;
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;
#LOWER(str)和LCASE(str)、UPPER(str)和UCASE(str)前两者将str中的字母全部转换成小写,后两者将字符串中的字母全部转换成大写
#LEFT(s,n)、RIGHT(s,n)前者返回字符串s从最左边开始的n个字符,后者返回字符串s从最右边开始的n个字符
select
left(name,1) 姓,
left(name,2) 名,
left(name,3) 全名
from employee02 where name = '王小明';
select
right(name,1) 姓,
right(name,2) 名,
right(name,3) 全名
from employee02 where name = '王小明';
#LPAD(s1,len,s2)、RPAD(s1,len,s2)前者返回s1,其左边由字符串s2填补到len字符长度,假如s1的长度大于len,则返回值被缩短至len字符;前者返回s1,其右边由字符串s2填补到len字符长度,假如s1的长度大于len,则返回值被缩短至len字符
select
LPAD(id,5,'0') id
from employee02 where name = '王小明';
select
RPAD(id,5,'0') id
from employee02 where name = '王小明';
#REPEAT(s,n)返回一个由重复字符串s组成的字符串,字符串s的数目等于n
select
REPEAT(1,6) id
from employee02 where name = '王小明';
select
REPLACE(name,'小','明')
from employee02 where name = '王小明';
#SUBSTRING(s,n,len)、MID(s,n,len)两个函数作用相同,从字符串s中返回一个第n个字符开始、长度为len的字符串
select
SUBSTRING(name,1,2) name
from employee02 where name = '王小明';
select
MID(name,1,2) name
from employee02 where name = '王小明';
#LOCATE(str1,str)、POSITION(str1 IN str)、INSTR(str,str1)三个函数作用相同,返回子字符串str1在字符串str中的开始位置(从第几个字符开始)
select
LOCATE('王',name) name
from employee02 where name = '王小明';
select
POSITION('小' in name) name
from employee02 where name = '王小明';
select
INSTR(name,'小') name
from employee02 where name = '王小明';
2.日期和时间函数
select
date
from employee02 where name = '王小明';
#CURDATE()、CURRENT_DATE
select
CURDATE()
from employee02 where name = '王小明';
select
CURRENT_DATE
from employee02 where name = '王小明';
#CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE()
select
CURRENT_TIMESTAMP()
from employee02 where name = '王小明';
select
LOCALTIME()
from employee02 where name = '王小明';
select
NOW()
from employee02 where name = '王小明';
select
SYSDATE()
from employee02 where name = '王小明';
#UNIX_TIMESTAMP()、UNIX_TIMESTAMP(date)
select
UNIX_TIMESTAMP()
from employee02 where name = '王小明';
select
UNIX_TIMESTAMP(date)
from employee02 where name = '王小明';
#MONTH(date)和MONTHNAME(date)
select
MONTH(date)-1 当前月份,
MONTHNAME(date) 下个月
from employee02 where name = '王小明';
#DAYOFYEAR(d)、DAYOFMONTH(d)前者返回d是一年中的第几天,后者返回d是一月中的第几天
select
DAYOFYEAR(2)
from employee02 where name = '王小明';
3.条件判断函数
SELECT IF(1<2,2,3);
SELECT IF(1>2,2,3);
select
name,
if(name = '王小明','yes','no') 判断结果
from employee02 where name = '王小明';
select
name,
if(name = '王二明','yes','no') 判断结果
from employee02 where name = '王小明';
select
name,
ifNull(name,'无') 结果
from employee02 where name = '王小明';
select
case name when '王小明' then '王小明' else '其他' end 结果
from employee02 where name = '王小明';
select
case name when '王二明' then '王小明' else '其他' end 结果
from employee02 where name = '王小明';
4.系统信息函数
select VERSION();
select CONNECTION_ID();
show processlist;
#USER()、CURRENT_USER()、SYSTEM_USER()、SESSION_USER()查看当前被MySQL服务器验证的用户名和主机的组合,一般这几个函数的返回值是相同的
select USER();
select CURRENT_USER();
select SYSTEM_USER();
select SESSION_USER();
#CHARSET(str)查看字符串str使用的字符集
select
CHARSET(name)
from employee02 where name = '王小明';
5.加密函数
#PASSWORD(str)从原明文密码str计算并返回加密后的字符串密码,注意这个函数的加密是单向的(不可逆),因此不应将它应用在个人的应用程序中而应该只在MySQL服务器的鉴定系统中使用
select
PASSWORD(name)
from employee02 where name = '王小明';
#为字符串算出一个MD5 128比特校验和,改值以32位十六进制数字的二进制字符串形式返回
select
MD5(name)
from employee02 where name = '王小明';