1、字符串函数:
concat(s1,...sn),连接s1,...sn为一个字符串;任何字符串与NULL 进行连接的结果都将是null。
select concat('aa','bb','cc.dd'); #aabbcc.dd;
select concat('123','@#$$','db3','he()'),concat('sdfh',null); #123@#$$db3he(),null;
insert(str,x,y,instr),将字符串str从第x位置开始,y个字符长的子串替换为字符串instr;
select insert('hello',2,3,'app'); #happo;
select insert('hello world!',6,1,','); #hello,world!;
select insert('hello',2,3,null); #null;
lower(str),将字符串str中所有字符变为小写;
upper(str),将字符串str中所有字符变为大写;
select lower('HELLO'),upper('world'); #hello,WORLD;
select lower('NULL'),upper('null'),lower(null),upper(null); #null,NULL,空,空;
left(str,x),返回字符串str最左边的x个字符;
right(str,x),返回字符串str最右边的x个字符;
select left('helloworld',5),right('helloworld',5); #hello,world;
select left('hello',1),right('hello',1); #h,o;
select left(null,2),right(null,3),left('null',1); #空,空,n;
lpad(str,n,pad),用字符串pad对str最左边进行填充,直到长度为n个字符长度;
rpad(str,n,pad),用字符串pad对str最右边进行填充,直到长度为n个字符长度;
select lpad('world',10,'hello'),rpad('hello',10,'world'); #helloworld,helloworld;
select lpad('null',6,'1234'); #12null;
select rpad(null,6,'123'),lpad(null,5,'321'); #空,空;
select lpad('1',5,'b'),rpad('b',5,'1'); #bbbb1,b1111;
ltrim(str),去掉字符串str左侧的空格;
rtrim(str),去掉字符串str右侧的空格;
select ltrim(' ab'),rtrim('12 '); #ab,12;
select ltrim(' |ab'),rtrim('12| '); #|ab,12|;
repeat(str,x),返回str重复x次的结果;
select repeat('1.',3); #1.1.1.;
select repeat('a|',2); #a|a|;
replace(str,a,b),用字符串b替换字符串str中所有出现的字符串a;
select replace('hello','l','p'); #heppo;
select replace('20141107','1','一'); #20一4一一07;
strcmp(s1,s2),比较字符串s1和s2;比较字符串s1 和s2 的ASCII 码值的大小,s1比s2小,返回-1,s1与s2相等,返回0,s1比s2大,返回1。
select strcmp('ab','12'),strcmp('ab','Ab'),strcmp('a1','1a'); #返回值1,0,1;
select strcmp('ab','aB'),strcmp('ab','Ab'),strcmp('ab','AB'),strcmp('a','b'); #0,0,0,-1;
trim(str),去掉字符串行尾和行头的空格;
select trim(' |ab| '),trim(' 12 '); #|ab|,12;
substring(str,x,y),返回从字符串str x位置起y个字符长度的字串;
select substring('abcdef',3,3),substring('helloworld',5,3); #cde,owo;
2、数值函数:
abs(x),返回x的绝对值;
select abs(-10.2),abs(9) #10.2,9;
ceil(x),返回大于x的最大整数值;
select ceil(0.8),ceil(2),ceil(2.8),ceil(-2.2); #1,2,3,-2;
floor(x),返回小于x的最大整数值;
select floor(0.8),floor(2),floor(3.8),floor(-3.2);#0,2,3,-4;
mod(x,y),返回x/y的模;
select mod(129,5),mod(15,10),mod(1,11),mod(null,10); #4,5,1,null;
rand(),返回0到1内的随机数;
select rand(),rand(); #随机0到1内随机数;
select ceil(100*rand()),floor(100*rand()); #取任意指定范围(0-100内)的任意随机数;
round(x,y),返回参数x的四舍五入的有y位小数的值;
select round(1.1),round(1.1,2),round(1,2); #1,1.10,1.00;
select round(10.038,2),round(0.34,3),round(0.45); #10.04,0.340,0;
truncate(x,y),返回数字x截断为y位小数的结果;
select round(1.235,2),truncate(1.235,2); #1.24,1.23;
3、日期和时间函数:
curdate(),返回当前日期;
select curdate(); #2014-11-10;
curtime(),返回当前时间;
select curtime(); #10:40:40;
now(),返回当前日期和时间;
select now(); #2014-11-10 10:40:40;
unix_timestamp(date),返回日期date的unix时间戳;
select unix_timestamp(now()); #1415587510;
select unix_timestamp(curdate()); #1415548800;
select unix_timestamp('1992-05-19'); #706204800;
from_unixtime,返回unix时间戳的日期值;和unix_timestamp(date)互为你操作;
select from_unixtime(curdate()); #1970-08-22 10:45:10;
select from_unixtime(curtime()); #1970-01-02 13:17:19;
select from_unixtime(1415587510); #2014-11-10 10:45:10 (now());
select from_unixtime(1415548800); #2014-11-10 00:00:00 (curdate());
week(date),返回日期date为一年中的第几周;
select week(now),week(curdate()),week('1992-05-19'); #45,45,20;
year(date),返回日期date的年份;
select year(now()),year(curdate()); #2014,2014;
hour(time),返回time的小时值;
select hour(now()),hour(curtime()); #11,11;
minute(time),返回time的分钟值;
select minute(now()),minute(curtime()); #24,24;
monthname(date),返回date的月份名;
select monthname(now()),monthname(curdate()),monthname('1987-04-21'); #november,november,april;
date_format(date,fmt),返回按字符串fmt格式化日期date值;
%S,%s 两位数字形式的秒(00,...,59);
%i 两位数字形式的分(00,...,59);
%H 两位数字形式的小时(00,...,23);
%h,$l 两位数字形式的小时(01,...,12);
%k 数字形式的小时,24小时(0,...,23);
%I 数字形式的小时,12小时(1,...,12);
%T 24小时的时间形式(hh:mm:ss);
%r 24小时的时间形式(hh:mm:ss AM或hh:mm:ss PM);
%p AM或PM;
%W 一周中每一天的名称(sunday,...,saturday);
%a 一周中每一天名称的缩写(sun,...,sat);
%d 两位数字表示月中的天数(00,...,31);
%e 数字形式表示月中的天数(1,...,31);
%D 英文后缀表示月中的天数(1st,2nd,3rd,...);
%w 以数字形式表示周中的天数(0=sunday,...,6=saturday);
%j 以3位数字表示年中的天数(001,...,366);
%U 周(0,1,52),其中sunday为周中的第一天;
%u 周(0,1,52),其中monday为周中的第一天;
%M 月名(january,february,...,december);
%b 缩写的月名(jan,feb,...,dec);
%m 两位数字表示的月份(01,...,12);
%c 数字表示的月份(1,...,12);
%Y 4位数字表示的年份;
%y 2位数字表示的年份;
%% 直接值"%";
select date_format(now(),'%c/%e/%Y %H:%i:%s'); #11/10/2014 11:52:24 ;
date_add(date,interval expr type),返回一个日期或时间值加上一个时间间隔的时间值;返回与所给日期date 相差interval 时间段的日期。#其中interval是间隔类型关键字,expr是一个表达式,表达式后面对应类型,type是间隔类型;
hour,小时,hh;
minute,分,mm;
second,秒,ss;
year,年,YY;
month,月,MM;
day,日,DD;
year_month,年和月,YY-MM;
day_hour,日和小时,DD hh;
day_minute,日和分,DD hh:mm;
day_second,日和秒,DD hh:mm:ss;
hour_minute,小时和分,hh:mm;
hour_second,小时和秒,hh:ss;
minute_second,分钟和秒,mm:ss;
例:select now() current,date_add(now(),interval 1 month) 'a month later'; #一个月后;
select now() current,date_add(now(),interval '1_1' year_month) 'after five year and 1 month'; #一年一月后;
也可以用负数让它返回之前的某个日期时间;
例:select now() current,date_add(now(),interval '-1_-1' year_month) before_1year_1month; #一年一月之前;
datediff(expr,expr2),返回起始时间expr和结束时间expr2之间的天数;
例:select datediff(now(),date_add(now(),interval -2 year)); #当前时间与两年前相差的天数;
select datediff(now(),'1949-10-01'); #当前时间与1949年10月1日相差的天数;
4、流程函数:
if(value,t,f) 如果value为真,返回t;否者返回f;
select if(sal>10000,'high','low') from pro_file; #如果表中字段sal大于10000,返回high,否则返回low;
ifnull(value1,value2) 如果value1不为空返回value1,否者返回value2;
select ifnull(salary,0) from salary; #如果salary不为空,返回salary的值,否则返回0;
case when [value1] then [result1]...else [default] end 如果value1为真,返回result1,否则返回default;
select case when sal>=5000 then 'high' else 'low' end result from pro_file; #
case [expr] when [value1] then [result1]...else [default] end 如果expr等于value1,返回result1,否则返回default;
select case sal when 5000 then 'low' when 7000 then 'mid' else 'high' end from pro_file; #
select case salary when 1000 then 'low' when 2000 then 'mid' else 'high' end from salary;#
select case salary when 1000 then '1st' when 2000 then '2nd' when 3000 then '3rd' when 4000 then '4th' else '5th' end from salary; #
5、其它常用函数:
database() 返回当前数据库名;
select database();
version() 返回当前数据库版本;
select version();
user() 返回当前登录用户名;
select user();
inet_aton(ip) 返回ip地址的数字表示;
select inet_aton('192.168.1.1'); #返回ip地址的网络字节序表示;
一般查询ip方法:select * from salary where ip>='192.168.1.1' and ip<='192.168.1.254'; #空集;
select * from salary where inet_aton(ip)>=inet_aton('192.168.1.1') and inet_aton(ip)<=inet_aton('192.168.1.254'); #
inet_ntoa(num) 返回数字代表的ip地址;
select inet_ntoa(3232235777); #与inet_aton(ip)相反;
password(str) 返回字符串str的加密版本;返回字符串str的加密版本,一个41位长的字符串;
select password('123456');
md5() 返回字符串str的md5值;
select md5('123456');
阅读(1017) | 评论(0) | 转发(0) |