用在select语句、子句 where ,order by having等
用在update 和delete 中
函数中可将字段名作为变量来用,值是这个列对应的每一条记录。
查询元数据 information_schema
1. 字符串
length(name) //返回长度
concat('abc','def',name) //整列可以链接
concat_ws(separator,str1,str2) 使用sep链接str1和str2
insert("abcdef",1,2,"a") //将 abcdef的0开始2个长度的字符串替换为a,结果为 acdef
select insert(name,1,2,"aa")from users;
lower(str) upper(str) //比较比较常用
select name from users where lower(name)=='aaa';
left(str, size) right(str,size) mid(str,pos,size)
locate(substr,str,[start]) //从str的start位置开始查找substr
substring(str,[from],pos,len)
repeat('mysql',3) //得到 mysqlmysqlmysql
replace(str,from_str,to_str) //替换字符串
update ta1 SETname=REPLACE(name, 'gbin1.com', 'gbtags.com')WHERE name LIKE '%John%';
lpad(sr,length,padstr) //str的左边由padstr补全到length长度 rpad
trim(str) ltrim(str) rtrim(str) //去除空格
reverse(str) 翻转
space(len) // 返回len长度的空格
strcmp(s1,s2)
2. 数值函数
abs(x)
ceil(x)
floor(x)
mod(n,m) ( n%m )
PI() 返回pi的值
rand() 返回0,1之间的随机
round(x,y) 返回x 四舍五入的,y位小数的值
sign(x) 返回x的符号 -1 0 1
truncate(x,y) 返回x截断为y位小数的值
3. 日期
curtime() 当前时间
curdate() 当前日期
now() 日期 和时间
unix_timestamp(now()) timestamp格式的毫秒数
from_unixtime(tempstap) 将timestamp转换为正常日期
hour() week() date() minute() , monthname() 如:
SELECT DATE('2003-12-31 01:02:03') , minute(curtime());
data_format(now(),'%y-%m-%d') 格式化日期
4. 流程控制
if(value, t,f) //value为真返回t,否则返回f
select if(age>18, '成人','儿童')
ifnull(value1,value2) //如果value1不为空返回value1,否则返回 value2 ,用来替换空值,如
ifnull(age,0)
case value when[compare-value] then [result1].. else [default] end //类似于switch语句
select case age when 60 then 'old' else 'man' end
5. 其他函数
database() 返回数据库
version()
user() 当前用户
inet_aton(ip) inet_ntoa(num)
password() //用于mysql自己的认证,如创建mysql用户,不建议用于应用程序,算法会改变
password('12345')
md5() //对应用系统中用户密码加密
md5('12345')
6. 字符串查找
% 多个, _ 一个, \%和\_是字符转义
正则表达式 见 参考G MySQL正则表达式
SELECT 'fo\nfo' REGEXP'^fo$' 返回0