一、 控制流程函数
if(value,t,f)
ifnull(value1,value2) value1不为空,返回value1,否则返回value2
case when[value1] then [result1] when [value2]... then [result2] else [default] end
case [expr] when [value1] then [result1] else[default] end
二、 字符串比较函数
concat(s1,s2)
insert(str,x,y,instr) str的x位置开始,y个长度,替换为instr
lower(str)
upper(str)
left(str,x) 返回str左面的x个字符
right(str,x)
lpad(str,n,pad)用pad对str左边进行填充,直到长度为n个字符
rpad(str,n,pad)
ltrim(str)
rtrim(str)
trim(str)
repeat(str,x) 返回x边str
replace(str,a,b) str中的a字符串被b字符串替换
strcmp(s1,s2) 比较s1,s2字符串,ASCII码比较
substring(str,x,y) 取子字符串,x开始,y个长度
locate(search,str):返回search在str的位置
三、 数学函数
数值:
abs(x)
ceil(x)
floor(x)小于x的最大整数
mod(x,y)
rand() 0-1内的随机小数 1-100的随机数:ceil(100*rand())
round(x,y) x的四舍五入y位小数 rand(x,0)=x四舍五入取整
truncate(x,y) x截断为y位小数的结果
format('123.45',1) => 123.4
四、 日期和时间函数
curdate()
curtime()
now()
unix_timestamp(date) date的unix时间戳 返回数字秒,从1970开始
form_unixtime(34343) 时间戳转日期值
week(date) 一年只的第几周
year(date)
hour(time) time的小时数
minute(time)
monthname(date)
date_format(date,fmt) 字符串fmt格式化的日期值
date_add(date,interval expr type) date加上间隔后的时间:interval不能少
datediff(expr,expr2) expr2-expr1的天数
timediff(time1,time) 精确到秒 返回的是时间格式,配合hour进行小时提取
dayofweek(date):1=星期天;2=星期一。返回数字
weekday(date):0=星期一;1=星期二;返回数字
dayofmonth(date): 返回1-31
dayofyear(date):返回1-366
month(date):返回1-12
dayname(date):Thursday .返回英文星期几
quarter(date):返回1-4季度。(1-3月为第一季度)
week(date):返回数字,本年的第几周
week(date,0):同上,开始于星期天(小)
weed(date,1):开始于星期一(大)
year(date):返回数字年份
hour(time):返回数字 0-23
minute:返回0-59
second(time):返回0-59
period_add(p,n):增加n个月到阶段p(YYMM或YYYYMM),p不是日期值,以格式YYYYMM返回。period_add(9801,2) => 199803
period_diff(p1,p2):period_diff(9802,199703) => 11 . 返回间隔月数
date_add(date,interval expr type):adddate(date,interval expr type)
date_sub(date,interval expr type):subdate(date,interval expr type) date_add的反义词
expr: 字符串表达式,可以 - 开头表负
type:关键字,指明表达式应该如何解释
extract(type from date)从日期中返回'type'间隔。有时不是期望格式。extract(day from now()) => 22
SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); => 199907
type值 含义 期望的expr格式
SECOND 秒 SECONDS
MINUTE 分钟 MINUTES
HOUR 时间 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"
HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"
DAY_HOUR 天和小时 "DAYS HOURS"
YEAR_MONTH 年和月 "YEARS-MONTHS"
HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"
DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"
DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"
date_add(now(),interval 2 day):现在时间+2天
date_add(now(0,interval "10:10" minute_second):现在时间添加10分10秒。格式是type的期望的字符串格式
select "1997-21-31" + interval 1 second; => 1997-12-31 00:00:01
to_days(date):返回一个天数(从0年的天数): to_days(950501) => 728779;同to_days('1995-05-01')
from_days(n):给一个天数,返回一个date值: from_days(728779) = > '1995-05-01'
date_format(date,format):格式化日期 date_format(now(),'%W') => Wednesday
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。
TIME_FORMAT(time,format) DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j') => '4th 97 Sat 04 10 Oct 277'
curdate();=> '1997-12-15'
curdate()+0; => 19971215
curtime();=>'23:50:26'
curtime()+0;=>230526
now(); 同上
sysdate();同上
unix_timestamp(date):从'1970-01-01 00:00:00'GMT开始的秒数.可以无参数
FROM_UNIXTIME(unix_timestamp);
FROM_UNIXTIME(875996580); =. '1997-10-04 22:23:00'
FROM_UNIXTIME(875996580) + 0; => 19971004222300
SEC_TO_TIME(seconds) SEC_TO_TIME(2378); -> '00:39:38' SEC_TO_TIME(2378) + 0; -> 3938
TIME_TO_SEC(time) TIME_TO_SEC('00:39:38'); -> 2378
五、 全文搜索功能函数
函数 MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])
参考URL:http://www.jb51.net/article/28679.htm
六、 加密函数
七、 信息函数
BENCHMARK(count ,expr ) 批量运行。用于计时
CHARSET('hehe') => utf-8返回字符串自变量的字符集。
COLLATION('hehe') => utf8_general_ci 返回惠字符串参数的排序方式
CONNECTION_ID()返回对于连接的连接 ID ( 线程 ID) 。每个连接都有各自的唯一 ID 。
CURRENT_USER() => root@localhost
DATABASE() 返回当前使用的数据库名
FOUND_ROWS() :最近一次selcet语句返回的行数(忽略limit干扰),limit 5 -> 5 limit 2,5 -> 7 最大的limit 值
LAST_INSERT_ID() 自动返回最后一个 INSERT 或 UPDATE 问询为 AUTO_INCREMENT 列设置的第一个 发生的值。
ROW_COUNT() 返回被前面语句升级的、插入的或删除的行数。
VERSION()
八、 其他函数
DEFAULT(col_name ) 返回一个表列的默认值。若该列没有默认值则会产生错误。
FORMAT(X ,D ) format('2123.456',2) => 2,123.46 (X可是整数)将数字 X 的格式写为 '#,###,###.##', 以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。若 D 为 0, 则返回结果不带有小数点,或不含小数部分。
inet_ntoa('192.159.1.2') => 342343 返回一个代表该地址数值的整数。地址可以是 4 或 8 比特地址。
int_ntoa(32342) => 192.1.22.23
name_const('column',2342) 列别名。支持version()当列明。新增常量列。
SLEEP(秒数) 睡眠过程,键盘输入会被存储,wake后执行。不影响其他线程。
INSERT ... ON DUPLICATE KEY UPDATE http://blog.youkuaiyun.com/ghsau/article/details/23557915
database()
version()
user()
inet_aton('ip') ip-> num
inet_ntoa(num) num->ip
password('xxx')
md5()
九:聚合函数
AVG([DISTINCT] expr ) DISTINCT 选项可用于返回 expr 的不同值的平均值。
group_concat(expr) 链接一个组的字符串结果
MIN([DISTINCT] expr ), MAX([DISTINCT] expr )
SUM([DISTINCT] expr ) 无行返回null
526

被折叠的 条评论
为什么被折叠?



