SQL中的常用函数(一)

这里我们列举出来mysql中常用到的函数做一个简单的演示,很多函数经常是在嵌套使用,才可以实现需要的功能
本次主要介绍2个函数

  • case when…then… else …end
  • substr()

用法简介

1. case when

case when的作用是对不同情况的结果进行条件判断,作用类似于Java程序中的case when,可以用来打标签。
case when 有两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。


  --简单的case函数
  case sex
	when '1' then '男'
	when '2' then '女'
	else '其他'
  end as 性别

  --case搜索函数
  case
  ​	when sex ='1' then '男'
  ​	when sex  = '2' then '女'
  ​	else '其他' 
  end as 性别
2. substr()

substr的作用是对于对应字段的内容进行字符串截取

## 简单举例
substr('zhangsan',1,1)   
执行结果 ‘z’  从zhangsan的左边第1位开始,截取长度为1的字符串

substr('zhangsan',2,3)  
执行结果 ‘han’  从zhangsan的左边第2位开始,截取长度为3的字符串

substr('zhangsan',-2,2)  
执行结果 ‘an’  从zhangsan的右边第2位开始,截取长度为2的字符串
 

实战

  • 需求
    现在有下面的表格,每个学生的名字最后一位的数字代表的是学生的班级,没有数字的表示四班,需要我们给每个学生的打上班级的标签,并按照班级排序。
    比如 zhangsan1 代表一班 lisi2 代表二班
    在这里插入图片描述

  • 思路
    这里只是对于我们上面的两个sql函数的简单的结合使用,这种需求非常常见

  • SQL实现

 SELECT sid,sname,ssex,
 case
	when SUBSTR(sname,-1,1) = '1' then '1班'
	when SUBSTR(sname,-1,1) = '2' then '2班'
	when SUBSTR(sname,-1,1) = '3' then '3班'
	else '4班'
 end as 'class'
from student  ORDER BY class;
  • 结果
    在这里插入图片描述

简单的介绍就说到这里,后面我们在介绍其他函数的时候,会结合现有的函数灵活使用。

列举了SQL语句中大部分常用函数 Abs(number) 取得数的绝对。 Asc(String) 取得字符串表达式的第一个字符ASCII 码。 Atn(number) 取得一个角度的反正切。 CallByName (object, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。 CBool(expression) 转换表达式为Boolean 型态。 CByte(expression) 转换表达式为Byte 型态。 CChar(expression) 转换表达式为字符型态。 CDate(expression) 转换表达式为Date 型态。 CDbl(expression) 转换表达式为Double 型态。 CDec(expression) 转换表达式为Decimal 型态。 CInt(expression) 转换表达式为Integer 型态。 CLng(expression) 转换表达式为Long 型态。 CObj(expression) 转换表达式为Object 型态。 CShort(expression) 转换表达式为Short 型态。 CSng(expression) 转换表达式为Single 型态。 CStr(expression) 转换表达式为String 型态。 Choose (index, choice-1[, choice-2, ... [, choice-n]]) 以索引来选择并传回所设定的参数。 Chr(charcode) 以ASCII 码来取得字符内容。 Close(filenumberlist) 结束使用Open 开启的档案。 Cos(number) 取得一个角度的余弦。 Ctype(expression, typename) 转换表达式的型态。 DateAdd(dateinterval, number, datetime) 对日期或时间作加减。 DateDiff(dateinterval, date1, date2) 计算两个日期或时间间的差。 DatePart (dateinterval, date) 依接收的日期或时间参数传回年、月、日或时间。 DateSerial(year, month, day) 将接收的参数合并为一个只有日期的Date 型态的数据。 DateValue(datetime) 取得符合国别设定样式的日期,并包含时间。 Day(datetime) 依接收的日期参数传回日 ....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值