# 进阶4 SQL常见函数

分类:
1/单行函数:
    字符函数:
        concat(),length(),ifnull(__,default) ,instr(),
        trim(),upper(),lower(),lpad(),rpad(),replace()
    数学函数:
        round,ceil,floor,truncate,mod;
    日期函数:
        now,curdate,curtime, year,month,monthname,day,hour,
        minute,second,str_to_date, date_format
    其他函数:
        
2/多行函数: 做统计用
/*
概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外仅暴露方法名
好处:1/隐藏了实现的细节
2.提高了代码的重用性
调用: select 函数名(实参列表) [from 表];
分类:
1/单行函数: concat(),length(),ifnull(__,default)
2/多行函数: 做统计用 */
#单行函数:
#1.字符函数
#length
SELECT LENGTH('六六'); #结果: 6
SELECT LENGTH(''); #结果: 3
#显示字符集
SHOW VARIABLES LIKE '%char%' ; #2.concat() #3.upper()/lower() 大写函数/小写函数
SELECT UPPER('asdd');
#实例:将姓变为大写,名变为小写,然后拼接
SELECT CONCAT(UPPER(last_name),' ', LOWER(first_name)) 姓名
FROM employees; #4 .substr(str,pos, len) / substring
#注意索引从1开始
SELECT SUBSTR('李莫愁爱上了陆展元',7) out_put; SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put; #案例: 姓名中首字母字符大写,其他字符小写,然后用_拼接 ,显示出来 SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)) ,'_',LOWER(SUBSTR(last_name,2))) out_put
FROM employees; #5.instr(s1,s2 ) 返回子串s2在母串中出现的第一次索引(从1开始),找不到返回0
SELECT INSTR('从前的那个从其那','从前') out_put; #6. trim #python的用法一致
SELECT TRIM(' 张三 ') AS out_put;
SELECT TRIM('a' FROM 'aaaaa张aaaaaaa三aaaaaaaaaaaaaaaa') AS out_put; #7.lpad 用指定字符实现左填充直指定长度
SELECT LPAD('殷素素',10,'*') AS out_put; #*******殷素素
SELECT LPAD('殷素素',2,'*') AS out_put; #殷素 #8.rpad 用指定字符实现右填充直指定长度
SELECT RPAD('殷素素',10,'*') AS out_put; #殷素素*******
SELECT RPAD('殷素素',2,'*') AS out_put; #殷素 #9.replace 全部替换
SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏') AS put; #张无忌爱上了赵敏 ########数学函数 (第二个参数表示保留小数点后位数) #1.round 四舍五入 ,第二个参数表示保留小数点后位数
SELECT ROUND(1.65); #2
SELECT ROUND(1.35); #1
SELECT ROUND(1.567,2); #1.57 #2.ceil 绝对向上取整 ,返回>=该参数的最小整数
SELECT CEIL(1.0); #1
SELECT CEIL(1.0001); #2
SELECT CEIL(-1.02); #1 #3.floor 向下取整,返回<=该参数的最大整数
SELECT FLOOR(-9.99); #-10
SELECT FLOOR(9.99); #9 #4.truncate 截断取整
SELECT TRUNCATE(1.699999,1) ; #1.6 #5.mod取余
/*
mod(a,b) : a-a/b*b即为取余结果
*/
SELECT MOD(-10,-3); #-1 #三.日期函数:
#1.now 返回系统当前日期+时间
SELECT NOW(); #2018-10-23 17:18:08 #2.curdate #返回当前的日期
SELECT CURDATE(); #2018-10-23 #3.curtime 返回当前的时分秒
SELECT CURTIME(); #17:17:47 #4.可以获取指定的时间部分: 年(YEAR)/月(MONTH)/日(day)/小时(hour)/分钟(minute)/秒(second)
SELECT YEAR(NOW()); #2018
SELECT YEAR('2008-10-10'); #2008 #5.str_to_date : 将字符串转换成标准格式的日期
#标准匹配符: 年(%Y.%y)/月(%m)/日(%d)/小时(%H.%h)/分钟(%i)/秒(%s)
SELECT STR_TO_DATE('9-13-1999','%c-%d-%Y'); #1999-09-13 #6.DATE_format :将日期转换成标准格式的字符串
SELECT DATE_FORMAT('2018/6/6','%Y年%m月%d日'); #2018年06月06日 #案例.查询入职日期为 1992-4-3的员工信息
SELECT * FROM employees WHERE hiredate = '1992-4-3';
SELECT * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%m-%d %Y'); #案例:查询有奖金的员工名和入职时间(xx月/xx日 xx年)
SELECT CONCAT(last_name," ",first_name),DATE_FORMAT(hiredate,'%m月/%d日 %Y年')
FROM employees
WHERE commission_pct IS NOT NULL; #四 .其他函数
SELECT VERSION(); #8.0.12
SELECT DATABASE(); #myemployees
SELECT USER(); #root@localhost #五. 流程控制函数 #1.if函数 : if else 的效果
SELECT IF(10<5,'大','小');
SELECT last_name,commission_pct,IF(commission_pct IS NULL,'没奖金,呵呵','有奖金,嘻嘻') 备注
FROM employees; #2.case 函数/结构 的使用1: switch case的效果
/*
mysql 中:
{ case 要判断的字段或者表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或者语句n;
end }
*/
#举个栗子
#部门号为30,显示工资为1.1倍;
#部门号为40,显示工资为1.2倍;
#部门号为50,显示工资为1.3倍;
#其他部分不变!
SELECT salary 原工资 ,department_id, CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 40 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees; #2.case 函数/结构 的使用二: 类似于多重if 语句
/*
mysql 中:
{ case
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或者语句n;
end }
*/
#举个栗子
#工资>20000, 显示A等级
#工资>15000, 显示A等级
#工资>10000, 显示C等级
#其他,显示D等级
SELECT salary 原工资 , CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END AS 工资级别
FROM employees;

MySQL 进阶4 SQL常见函数: 字符函数/数学函数/日期函数/流程控制函数(if/case)的更多相关文章

  1. (6)MySQL进阶篇SQL优化(MyISAM表锁)

    1.MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源 (如 CPU.RAM.I/O 等)的抢占以外,数据也是一种供许多用户共享的资源.如何保证数 据并 ...

  2. SQL server 数据库——数学函数、字符串函数、转换函数、时间日期函数

    数学函数.字符串函数.转换函数.时间日期函数 1.数学函数 ceiling()--取上限  select ceiling(oil) as 油耗上限 from car floor()--取下限 sele ...

  3. 数据库开发基础-SQl Server 聚合函数、数学函数、字符串函数、时间日期函数

    SQL 拥有很多可用于计数和计算的内建函数. 函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表 函数的类型 在 SQL 中,基本的函数类型和种类有若干种.函 ...

  4. SQl Server 函数篇 数学函数,字符串函数,转换函数,时间日期函数

    数据库中的函数和c#中的函数很相似 按顺序来, 这里价格特别的 print  可以再消息栏里打印东西 数学函数 ceiling()  取上限   不在乎小数点后面有多大,直接忽略 floor()   ...

  5. (2)MySQL进阶篇SQL优化(show status、explain分析)

    1.概述 在应用系统开发过程中,由于初期数据量小,开发人员写SQL语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多SQL语句开始逐渐显露出性能问题,对生产环境的影响也 ...

  6. sql 的实用函数(包含日期函数、截取字符串函数)

    CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),data_to_b ...

  7. 【2017-03-13】Tsql 数学函数、字符串函数、转换函数、时间日期函数

    一.数学函数(针对值类型操作) 1.ceiling():取上限 只要小数点后有数字大于0,整数位自动进1 2.floor():取下限 将小数点位舍去,不管小数点位大小 3.round(四舍五入的值,保 ...

  8. 在oracle中操作数据——使用特点的格式插入日期 sql函数的使用——日期函数

    日期函数用于处理date类型的数据,默认情况下的日期格式是dd-mm-yy即12-7月-78 (1)sysdate:该函数返回系统时间 (2)add_months(d,n) (3)last_day(d ...

  9. ABAP函数篇1 日期函数

    1. 日期格式字段检查 data:l_date type ekko-bedat. l_date = '20080901'. CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY ...

随机推荐

  1. [逻辑学]意外绞刑悖论(Hangman paradox)(又称意外考试悖论)

    绞刑 在审讯中一位囚徒被法官判处死刑.判决如下:“你下周将会被处决,但哪天处决对你来说是一个惊喜.”囚徒因此作出如下推理:“假如处决日是周日,那么在周六夜晚降临后,我将提前知道我周日会被处决,那样的话 ...

  2. 最新 中至数据java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.中至数据等10家互联网公司的校招Offer,因为某些自身原因最终选择了中至数据.6.7月主要是做系统复习.项目复盘.Leet ...

  3. Mybatis表关联一对多、多对一、多对多

    项目工程结构如下: 1. 搭建MyBatis框架环境 首先需要引入两个包:mybatis.jar 和 sqljdbc42.jar包 若分页需要导入两个包:pagehelper-5.1.0.jar 和 ...

  4. 99%的人都理解错了GET与POST的区别

    原文链接:https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3 ...

  5. 1024多人激情在线聊天室---select函数的使用

    效果展示 step1.服务器启动!端口号3006 step2.1号客户端启动!jack加入了群聊 step3.2号客户端启动!kelly加入了群聊 step4.3号客户端启动!zwj加入了群聊 ste ...

  6. COleVariant类

    COleVariant本质上是一个枚举,用同一种类型来表达不同的子类型.如同boost中的variant. COLeVariant类是对VARIANT结构的封装. VARIANT结构包含两部分.其一是 ...

  7. RecursiveSequence(HDU-5950)【矩阵快速幂】

    题目链接: 题意:Si=S(i-1)+2*S(i-2)+i^4,求Sn. 思路:想到了矩阵快速幂,实在没想出来怎么构造矩阵.... 首先构造一个向量vec={a,b,16,8,4,2,1}. 在构造求 ...

  8. SAS学习笔记7 合并语句(set、merge函数)

    set函数:纵向合并数据集 set语句进行纵向合并.set语句的作用是将若干个数据集依次纵向连接,并存放到data语句建立的数据集中.若set后面只有一个数据集,此时相当于复制的作用 注:data语句 ...

  9. java中针对 try和finally一些总结

    结论 1.不管有没有异常,finally中的代码都会执行 2.当try.catch中有return时,finally中的代码依然会继续执行 3.finally是在return后面的表达式运算之后执行的 ...

  10. 方法引用(method reference)

    目录 方法引用(method reference) 1. 含义 2. 分类 3. 总结 方法引用(method reference) 1. 含义 方法引用实际上是 Lambda 表达式的一种语法糖. ...