Sql mysql操作函数

 

补充:

UNIX_TIMESTAMP ('2018-3-7')   将日期变为时间戳。

FROM_UNIXTIME ('1520428820',"%y-%m-%d") 将时间戳变为格式化日期

Sql mysql操作函数

 

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   ')   # 返回的结果不包含左右两边的空格