目录
SELECT * FROM `users`
【字符串函数】
1、CONCAT(S1,S2....SN): 把传入的参数连接成一个字符串
select 1+1;
SELECT concat("abc","好好生活!");
SELECT concat(name,"的年龄是:",age) as 查询结果 from users;
2. INSERT(str, x, y, str2): 将字符串str从X位置开始,y个字符串长度替换为字符串str2
select insert("该去吃饭了吃什么呢!",2,3,"to be best") as 查询结果;
select insert(name,2,2,"替换内容") from users;
3. LOWER(str)、 UPPER(str): 将字符串转为小或或大写(当区分大小写的时候)
select lower('I Love YOU'),upper('How about You');
select* from users where lower(name)="LILY";
4. LEFT(str, x)、 RIGHT(str, x): 分别返回最左边的X字符,和最右边的X个字符,如果第二个参数为NULL则什么也不返回。
select left('该去吃饭了吃什么呢',4),right('该去吃饭了吃什么呢',3);
5. LPAD(str, n, str2)、 RPAD(str,n, str2): 用字符串str2对str最左边和最右边进行填充,直到长度为n个字符长度
select name,lpad(name,10,'#'),rpad(name,10,'*') from users;
6. TRIM(str)、 LTRIM(str) 、 Rtrim(str): 去掉字符串两边,左边和右边字符串的空格
select concat('x',trim(' 民兵葛二蛋 '),'y'),concat('x',ltrim(' 民兵葛二蛋 '),'y'),concat('x',rtrim(' 民兵葛二蛋 '),'y');
7. replace(str, a,b):用字符串b替换字符串str中的所有出现的字符串a
select replace('你好啊,你在干什么','你','*');
8. strcmp(s1, s2):如果S1<S2小,返回-1;如果S1>S2则返回1;如果S1==S2则返回 0.
select strcmp("a","b"),strcmp("b","a"),strcmp("a","a");
9. substring(str, x, y): 返回字符串中的第x位置起y个字符串长度的字符。
select substring("该去吃饭了吃什么呢",3,5);
select name,substring(name,1,2) from users;
【数值函数】
ABS(x):返回X的绝对值
select abs(10),abs(-10);
ceil(x): 返回大于X的最小整数
select ceil(2.1),ceil(2.5),ceil(2.9);
floor(x): 返回小于X的最大整数
select floor(2.1),floor(2.5),floor(2.9);
mod(x, y): 返回x/y的模(取余)
select mod(10,4);
rand() 结果为 0-1之间的浮点随机数
select rand();
select ceil(rand()*100);
round(x,y): 返回参数X的四舍五入的有y位小数的值
select round(6.32015,4);
truncate(x,y):返回数字x截断为y位小数的结果
select truncate(1.234,2),round(1.235,2);
【日期函数】
curdate():返回当前日期
select curdate();
curtime():返回当前时间
select curtime();
now():返回当前日期和时间
select now();
unix_timestamp(now()):返回unix时间戳时间(1970年1月1日 08:00:00 到现在的秒数)
select unix_timestamp(now());
from_unixtime():上面的反操作:将unix时间戳返回成当前日期和时间数据
select from_unixtime(1357872458);
year() :当前年份
month():当前月份
week() :这一年的第几周
hour():当前小时
minute():当前分钟
second():当前秒
select year(now()) 年,month(now()) 月,day(now()) 日,week(now()) 周,hour(now()) 时,minute(now()) 分,second(now()) 秒;
select date_format(now(),"%Y-%m-%d %H:%i:%s");
【流程控制函数】
(创建新表和添加数据)
insert into salary values('',1000);
insert into salary values('',2000);
insert into salary values('',3000);
insert into salary values('',4000);
insert into salary values('',5000);
insert into salary values('',null);
案例一:薪资低于3000为低薪,否则为高薪:
select id,salary,if(salary>3000,'高薪','低薪') 档次 from salary;
案例二:不为空返回前者,为空返回后者:
select id,salary,ifnull(salary,'未知') from salary;
案例三:case when ...then
select id,salary,case when salary<=3000 then '属于低工资' else '属于高工资' end 判断标准 from salary;
select id,salary,case when salary<=3000 then '属于低工资' when salary>3000 then '属于高工资' else '其他' end 判断标准 from salary;
【其它函数】
database():当前数据库名
select database();
version():当前MySQL版本
select version();
user():当前登录用户
select user();
inet_aton(ip):当前ip地址的网络字节顺序
select inet_aton('192.168.1.1');
inet_ntoa(ip字节顺序):当前ip地址的网络字节顺序所代表的ip,即上面的反操作。
select inet_ntoa(3232235777);
password():对字符串加密,MySQL系统本身的加密,成为41位的字符串。
select password('123456');
md5():md5加密
select md5('123456');
备注:此文最早记录于2013年,10年后重新找出来并发表于CSDN,部分内容可能已过时,仅作参考。