Sql mysql操作函数
补充:
UNIX_TIMESTAMP ('2018-3-7') 将日期变为时间戳。
FROM_UNIXTIME ('1520428820',"%y-%m-%d") 将时间戳变为格式化日期
mysql 连接字符串函数:concat(str1,str2,str3......) 结果就是 str1str2str3 比如concat(1,'vs',2) => 1vs2
GROUP_CONCAT函数返回一个字符串结果(默认分隔符是逗号),该结果由分组中的值连接组合而成。常和groupby连用。
2018年6月19日
1.日期函数很多,不一一列举了
2. Aggregate 函数函数
# avg 返回数值列的平均值
SELECT AVG(point) from a where id <8505 # 查询id小于8505的用户的平均得分
# count 返回匹配指定条件的行数
SELECT count(*) from a #统计表中数据条数 count(字段)的结果不会包含该字段值为null的数据条数
# field 用第一个参数str,跟后面的N个字符串参数中寻找,如果寻找到一模一样的字符串,则返回其索引位置(索引起始值从1开始)
SELECT field (200,100,105,111,200) # 第一个str是200, 后面的str1=100,str2=105,str3=111,str4=200 最终返回4
# max 返回指定列的最大值
SELECT max(point) from a where id between 8507 and 8520 #查询 8507-8520之间point的最大值
# min 返回指定列的最小值
SELECT min(point) from a where id between 8507 and 8520 #查询 8507-8520之间point的最小值
# sum 返回数值列的总数
SELECT sum(point) from a where id between 8507 and 8520 #查询 8507-8520之间point的总和
3. group by 语句 根据一个或多个列对结果集进行分组
select count(*),b.area from a left join b on a.id=b.wechat_id where a.id <8600 GROUP BY b.area #统计a表中id小于8600的用户所属区域的分散情况,也就是每个区域有多少人
# having where关键字无法和aggregate函数一起使用
SELECT 查询中,HAVING 子句必须紧随 GROUP BY 子句,并出现在 ORDER BY 子句(如果有的话)之前
SELECT m.nickname FROM m LEFT JOIN w ON m.userid = w.userid GROUP BY m.nickname HAVING count(w.id) > 5 #查询订单数量大于5的用户的nickname
# upper 或 ucase 将字符串中的字母全部转换成大写字母
select UPPER(a.nickname) from a limit 2 # 将前两个用户nickname中的字母都转化成大写
# lower 或 lcase 将字符串中的字母全部转化成小写字母
select LOWER("ASF"),LCASE("ADGJ")
# mid (column_name,start[,length]) 列,起始位置(从1开始),长度(可省略,默认到最后)从文本字段中提取字符。
select MID(nickname,2,2) from a # 从用户的nickname的第二位开始窃取两个长度(汉字算一个)
# length 返回文本字段中值的长度
select LENGTH(nickname) from a # 返回用户nickname的长度
#round 用于吧数值字段舍入成指定小数位数的数
select round(point,2) from a # 保留两位小数,整数不添加小数位
# sqrt 求平方根
select sqrt(16)
# rand 产生一个0到1之间的随机数
select RAND()
# concat 将多个列的内容拼接成一个字符串
select CONCAT(id,nickname,point) from a limit 2 #将前两个用户的信息拼接成字符串
# ifnull 如何处理null值
select IFNULL(point,666) from a where id =8507 #查询8507用户的point 如果为null则返回666
# replace (allstr,oldstr,newstr)
select REPLACE(nickname,'d','pandent') from a limit 1 #吧第一个用户的nickmame里的d换成pandent
# trim ltrim rtrim去除两边,左边,右边的空格
select trim(' pandent ') # 返回的结果不包含左右两边的空格