常用SQL函数


常用SQL函数:

--if() else if ()else() 用法 :
(CASE SCORE WHEN '判断语句1' THEN 'ture' 
			WHEN '判断语句2' THEN 'ture'
		ELSE 'false' END) as 实体类字段名

--ifnull 如果值为空则替换
 	ifnull(字段名,"替换的值")
 	nvl(字段名,'0')<>'0'  //is not null的换成函数nvl(字段名,'0')<>0
 
-- 判断语句 
 	IF(条件,'ture','false')
 	
-- 时间转换
 	date_format(时间字段,'%Y-%m-%d')
 	
-- 两个时间相差几个月
	months_between(to_date('2018-05-01','yyyy-mm-dd'),to_date('2023-12-10','yyyy-mm-dd')) 

-- 时间对比当前时间 相差 多少天  ABS 取绝对值
	ABS(DATEDIFF(DAY,CURDATE(),时间字段))

-- 字段转换
	cast(10 as nvarchar(2) //将数字10 转换为字符串(长度为2)
	
-- 保留两位小数
	ROUND(3.141592653, 2)
	FORMAT(x,n)
	
-- 字段加密  字段的属性为varchar,字符集是utf-8。需要将密文16进制化,不然解密取出来是null
	存入:
	INSERT INTO TABLE_NAME(password) VALUES (HEX(AES_ENCRYPT('需要加密的字段值', '秘钥(可以自定义)')));
	取出:
	SELECT AES_DECRYPT(UNHEX(password), '秘钥(可以自定义)') FROM TABLE_NAME

-- 字段截取
	substring_index(string,sep,num)
	参数说明:
	string:用于截取目标字符串的字符串。可为字段,表达式等。
	sep:分隔符,string存在且用于分割的字符,比如“,”、“.”等。
	num:序号,为非0整数。若为整数则表示从左到右数,若为负数则从右到左数。比如“www.baidu.com”截取字符‘www’,分割符为“.”,从左到右序号为1,即substring_index("www.baidu.com",'.',1);若从右开始获取“com”则为序号为-1即substring_index("www.baidu.com",'.',-1)

-- 四舍五入
	ROUND(x)
	
-- 删除字符串s中两端所有的字符串。要删除的字段在未指定的情况下,删除空格
	TRIM('要删除的字段' FROM 字段名)

-- 返回大于n的最小整数值
	CEILING(n)

-- (常用于GROUP BY从句的SELECT查询中)
	--返回指定列的平均值
	AVG(字段名)
	--返回指定列中非NULL值的个数
	COUNT(字段名)
	--返回指定列的最小值
	MIN(字段名)
	--返回指定列的最大值
	MAX(字段名)
	--返回指定列的所有值之和
	SUM(字段名)
	--返回由属于一组的列值连接组合而成的结果
	GROUP_CONCAT(字段名 
	
-- 比较字符串大小 
	STRCMP(s1,s2)比较字符串s1和s2

-- 在Mysql中计算年龄
    DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS('出生日期')),'%Y')+0 AS age 

-- 父表关联子表查询(1对多)针对子表元素 合并 去重
    regexp_replace(listagg(子表需要合并字段名,',') WITHIN GROUP (ORDER BY 子表需要合并字段名), '([^,]+)(,\1)*(,|$)', '\1\3') AS 实体类字段名

	
-- MYSql的IP对int的转换函数
	储存:inet_aton('127.0.0.1')  
	取出装换:inet_ntoa(2130706433) 
	
-- group_concat() 合并字段


|1 | 10|                 
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 | 

 以id分组,把去冗余的name字段的值打印在一行
select id,group_concat(name) from aa group by id; 

|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|



使用 WITH ROLLUP,此函数是对聚合函数进行求和,注意 with rollup是对 group by 后的第一个字段,进行分组求和。
这个就是在group by分组之后,再次对聚合函数进行求和


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

湫止

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值