MySQL数据库(二):常用SQL函数(处理不同类型数据转换场景)
目录
一、常用sql函数
1.concat():字符串拼接
2.ifnull(str1,str2):若str1为null,返回str2;否则,返回str1;
4.特别提示:+号与concat()
5.in
6.is / is not
7.安全等于:<=>
8.LENGTH(str):字符串长度;upper:转大写;lower:转小写;
9.substr(str,a,b):在str中从索引a开始,截取b个字符
10.示例:substr、upper、lower、concat
11.instr(str1,str2)
12.trim:去除前后空格或其它指定字符
13.lapd、rapd
14.replace(str1,str2,str3):使用str3替换str1中的str2
15、round、ceil、floor、truncate、mod、rand
16、now()、curdate()、str_to_date()、date_format()、datediff
17、流程控制函数:if、case
18:聚合函数:sum、、max 、min 、count
一、常用sql函数
1.concat():字符串拼接
特别注意:NULL和任何的数据concat拼接,结果都是NULL;
#将last_name、first_name拼接中间以“,”间隔;
SELECT concat(last_name,',',first_name) as 姓名
from employees;
2.ifnull(str1,str2):若str1为null,返回str2;否则,返回str1;
#若commission_pct为null,返回0,否则返回commission_pct
SELECT IFNULL(commission_pct,0) as 奖金率;
3.根据上面两个函数,示例:拼接可能为null的数据字段值,应该使用ifnull()+concat()
#为了防止commission_pct为null,导致concat()拼接结果为null,所以使用ifnull()判断
SELECT CONCAT(first_name,',',last_name,',',job_id,',',IFNULL(commission_pct,0))as OUT_PUT
FROM employees;
4.特别提示:+号与concat()
#+号,在sql中,如果拼接字段是字符串数据,它会转换为数据类型,作算术运算;
#如果不能转换为数据,就为0;+号和concat()函数不同;+号虽然在java或python中可以拼接字符,
#但在sql中,是向算术倾向的;
5.in
SELECT last_name,job_id FROM employees WHERE job_id IN ('IT_PORT','AD_VP','AD_PRES');
6.is / is not
特别注意:=号不能判断一个值是null;需要使用:IS;但是注意,is、is not只能用来判断字段值null
SELECT last_name,commission_pct FROM employees WHERE commission_pct is NULL;
#而下面这句则不行
#SELECT last_name,commission_pct FROM employees WHERE commission_pct = NULL;
7.安全等于:<=>
特别注意:<=>这个符号可以判断任何字段值是否等于,包括上面的值为null的情况;
SELECT last_name,commission_pct FROM employees WHERE commission_pct <=> NULL;
8.LENGTH(str):字符串长度;upper:转大写;lower:转小写;
9.substr(str,a,b):在str中从索引a开始,截取b个字符
特别注意:sql的索引从1开始
SELECT SUBSTR(last_name,2,3) FROM employees;
10.示例:substr、upper、lower、concat
#姓名首字母大写,其他字母小写,下划线连接
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),LOWER(SUBSTR(last_name,2)),"__",LOWER(first_name)) as 姓名
FROM employees;
11.instr(str1,str2)
返回str2字符串在str1中的起始索引,如果没有就返回0
SELECT INSTR("杨不悔爱上了殷六侠","殷六侠") AS out_put;#返回:7
12.trim:去除前后空格或其它指定字符
SELECT TRIM( ' 刘德华 ') AS output;
#刘德华
SELECT TRIM('a' FROM "aaa刘aa德aa华") AS 输出;
#刘aa德aa华
13.lapd、rapd
#lapd:用指定的字符实现左填充指定长度,如果字符长度大于指定长度,则从左保留指定长度字符
SELECT lpad('影视计算机',20,"*") AS 输出;
SELECT lpad('影视计算机',2,"*") AS 输出;
SELECT lpad('计算机',4,"影视") AS 输出;#如果指定填充的字符填充后,大于指定长度,那么之后在指定用于填充字符截取部分进行填充;
#rpad用指定的字符实现右填充指定长度,如果字符长度大于指定长度,则从从保留指定长度字符
SELECT rpad('影视计算机',20,"*") AS 输出;
SELECT rpad('影视计算机',2,"*") AS 输出;
SELECT rpad('计算机',4,"影视") AS 输出;#如果指定填充的字符填充后,大于指定长度,那么之后在指定用于填充字符截取部分进行填充;
14.replace(str1,str2,str3):使用str3替换str1中的str2
SELECT REPLACE('周芷若爱上了张无忌张无忌喜欢周芷若',"周芷若","赵敏")AS out_put;
15、round、ceil、floor、truncate、mod、rand
#数学函数,注意数学函数中的第二个参数一般都是保留几位小数
#round:四舍五入;
SELECT ROUND(-1.65);
SELECT round(1.5678,3);#保留3位小数
#ceil:向上取整,返回>=该参数的最小整数
SELECT ceil(-1.02);
SELECT ceil(1.02);
#floor 向下取整,返回<=该参数的最大整数
SELECT FLOOR(-1.02);
SELECT FLOOR(1.02);
#truncate 截断,参数2表示保留小数位数
SELECT TRUNCATE(1.69999,2);
#mod 取余
SELECT MOD(10,3);
#rand()
#获取随机数,返回0-1之间的小数
16、now()、curdate()、str_to_date()、date_format()、datediff
#日期函数
#now 返回当前系统日期+时间
SELECT NOW();
#curdate 返回当前系统日期,不带时间
SELECT CURDATE();
#curtime 返回当前系统时间,不带日期
SELECT curtime();
#可以指定显示:年、月、日、小时、分钟、秒(year、month、day、hour、minute、second)
SELECT YEAR(NOW()) 年;
SELECT SECOND(NOW()) 秒;
#str_to_date:将日期格式的字符转换成指定格式的日期
SELECT STR_TO_DATE('9-9-2020','%d-%m-%Y') as 年月日;
#date_format:将日期转换成字符
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日') as 年月日;
#datediff:返回两个日期相差的天数
select DATEDIFF('2020-01-02','2020-01-01');#返回:1
17、流程控制函数:if、case
#if(表达式1,表达式2,表达式3):1成立返回2,否则返回3
SELECT if(10<5,"对","错");
SELECT last_name,commission_pct,IF(commission_pct IS NULL,"没奖金,哈哈","有奖金,吃肉")FROM employees;
#case
SELECT salary 合同工资, department_id,
CASE department_idWHEN 30 THEN salary*1.1WHEN 40 THEN salary*1.2WHEN 50 THEN salary*1.3ELSE 0
END as 新工资
FROM employees;
18:聚合函数:sum、、max 、min 、count
特别注意:聚合函数都忽略null值,即:遇到null直接跳过;
#sum:求和、avg 平均值、max 最大值、min 最小值、count 计算个数
SELECT SUM(salary) from employees;
SELECT SUM(salary) 求和,avg(salary) 平均,MIN(salary) 最小,MAX(salary) 最大,COUNT(salary) 个数 FROM employees;
#注意:
#1.聚合函数中sum、avg一般用于处理数值型;max、min、count可以处理任何类型;
#2.NULL类型不参与聚合函数运算,即:在执行这几种方法时,null被忽略跳过;
#3.可以和关键字distinct搭配,实现去重的聚合
SELECT sum(DISTINCT salary),sum(salary) FROM employees; #可以看出加了distinct的要小很多
#count()函数最常用:下面两种均是统计表中所有行数:*或常量
SELECT COUNT(*) FROM employees;
SELECT COUNT(1) from employees;#在count()参数添加常量
MySQL数据库(二):常用SQL函数(处理不同类型数据转换场景)相关推荐
- 达梦数据库DM8常用SQL函数
在DM_SQL中支持数值.字符.日期.转换等种类的函数来满足用户不同的需求. 通过查询V$ifun和V$ifun_arg可以得到数据库提供的所有的函数以及其对应的参数要求. select a.NAME ...
- MySQL数据库中常用SQL语句
开发过程中我们经常会用到各种SQL语句,今天小编就来和大家分享一些简单的SQL语句的使用,便于大家对于项目的开发. 1.查询:查询本字段带文字的数据. select * from student w ...
- mysql数据库 常用函数_《MySQL数据库》常用函数整理
原标题:<MySQL数据库>常用函数整理 以下内容,是我整理出来的比较常用的字符串函数,数值函数,日期函数. 第一类:字符串函数 1.conv(n,from_base,to_base):对 ...
- 第十三章:Sqlserver2019数据库之Transact-SQL 语法基础及常用 SQL 函数总结
目录 一.Transact-SQL 语法基础 1.1 常量 1.2 变量 1.3 注释符.运算符与通配符 1.4 流程控制 二.SQL 函数 学前必备知识 第一章:SQL Server 数据库环境搭建 ...
- MySQL 中的常用日期函数
MySQL 中的常用日期函数: 函数 描述 NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 ...
- 第二十三章 MySQL数据库 手册2 SQL语句
第二十三章 MySQL数据库 手册2 SQL语句 实验二:用SQL语句,管理数据库 `危险命令,delete 后不加 where 条件代表删除所有数据 delete.` `更加危险的删除命令trunc ...
- 软件创新实验室:MySQL数据库与简单SQL语句使用
文章目录 前言 简介 特点 SQL DDL:操作数据库.表 DML:增删改表中数据 DQL:查询表中的记录 后记 拓展 范式 第一范式 1NF 第二范式 2NF 第三范式 3NF B+树 节点结构 插 ...
- mysql数据库中常用的类型_MySQL数据库中常用字段类型
MySQL数据库中常用字段类型 整数型:TINYINT,SMALLINT,INT,BIGINT 小数型:FLOAT,DOUBLE,DECIMAL(M,D) 字符型:CHAR,VARCHAR 日期型:D ...
- IDEA连接MySQL数据库并执行SQL查询操作
打开IDEA后,新建一个项目或者在已有项目上均可操作!!! 1 打开数据库页面 1.1 方式一 在主页面工具栏上找到View(视图)-Tool Windows(工具窗口)-Database(数据库), ...
最新文章
- PostgreSQL 数据访问 offset 的质变 case
- Dubbo——Dubbo协议整合Jackson序列化解决方案
- 简历石沉大海、面试被刷?拒绝你的HR小姐姐,可能只是个AI
- 管理学中的知名定律之阿尔巴德定理
- python下载显示文件丢失_Microsoft.PythonTools.resources.dll
- 机器学习顶刊文献_人工智能顶刊TPAMI2019最新《多模态机器学习综述》
- simple introduction to AUTOFS
- Codewars-Javascript训练手册:Date 对象
- 2026.静态分析工具pclint
- windows7 x86_64系统安装xampp后apache无法启动,端口冲突
- 输出一串小于100的随机数(rand())
- KernelShark Documentation
- 《原力计划【第二季】》第 8 周周榜揭晓!!!
- mt6765和骁龙665哪个好_华为都把骁龙850用在了自家的win10设备上了,麒麟还会远吗?...
- Java语言基础--枚举
- pip3 install tesserocr安装失败
- 自定义nagios监控mogilefs存储节点脚本
- PHP PDO(mysql) 封装类
- pandas求协方差、相关系数、显著性检验
- 【日常】解决问题:SSR1080端口被占用的问题
热门文章
- 新手学HTML 5移动开发——面向iOS和Android平台 完整pdf扫描版
- 利用pyecharts绘制微博粉丝地区分布图
- html带滚动条的文本框自动滚,Powerpoint中实现带滚动条文本框的技巧
- 联想电脑为什么合盖和按电源键不睡眠
- tiptop 编译运行_TIPTOP开发技术试题-答案
- java纸牌游戏程序报告_java--纸牌游戏自动出牌
- redis通过命令批量删除key
- jpsall查看集群jps状态sh脚本
- 【小程序】CF 逆战 CFHD活动助手一键领取小程序版
- 【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通