常用SQL函数:
(CASE SCORE WHEN '判断语句1' THEN 'ture'
WHEN '判断语句2' THEN 'ture'
ELSE 'false' END) as 实体类字段名
ifnull(字段名,"替换的值")
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(DATEDIFF(DAY,CURDATE(),时间字段))
cast(10 as nvarchar(2)
ROUND(3.141592653, 2)
FORMAT(x,n)
存入:
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)
TRIM('要删除的字段' FROM 字段名)
CEILING(n)
AVG(字段名)
COUNT(字段名)
MIN(字段名)
MAX(字段名)
SUM(字段名)
GROUP_CONCAT(字段名
STRCMP(s1,s2)比较字符串s1和s2
DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS('出生日期')),'%Y')+0 AS age
regexp_replace(listagg(子表需要合并字段名,',') WITHIN GROUP (ORDER BY 子表需要合并字段名), '([^,]+)(,\1)*(,|$)', '\1\3') AS 实体类字段名
储存:inet_aton('127.0.0.1')
取出装换:inet_ntoa(2130706433)
|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分组之后,再次对聚合函数进行求和