第五章 函数的使用

105 阅读7分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。


前言


提示:以下是本篇文章正文内容,下面案例可供参考

五(上)

1、REPLACE函数

概念:将表达式中的一个字符串替换为另一个字符串或空字符串后,返回一个字符表达式 作用:用新的字符串替换原来的字符串李的指定字符串 语法:

    REPLACE(character_expression,searchstring,replacementstring)
--eg: select Address ,replace(Address,'深圳','广东') as 地址 from Employee

2、REVERSE函数

概念:按相反顺序返回字符表达式。 语法:

REVERSE(character_expression)
eg: select Address,REVERSE(Address) as 地址 from Employee

3、STR函数

概念:返回由数字数据转换来的字符数据。 将数值类型转换成指定长度的字符串 语法:

STR(float_expression[,length[,decimal]])
eg : select str (123456.663,7,1)
      --第一个参数是需要转换的值
      -- 第二个参数转换后的总长度(包含小数点,正负号)
      -- 第三个值为小数位

4、SUBSTRING函数

概念:用于返回字符表达式、二进制表达式、文本表达式或图像表达式的一部分

语法:

SUBSTRING(value_expression,start_expression,length_expression)
 --         操作的字符串      开始截取的位置   返回的字符串的个数

作业:

--1.往歌曲表里使用插入一行数据语法和插入多行数据语法,插入5条数据
--一行 
  insert into song (songName,suoxie,typeID,singerID,cishu,URL) values('稻香','DX',1,5,'8000','酷狗')
 --多行
  insert into song (songName,suoxie,typeID,singerID,cishu,URL)
  select '光辉岁月','GHSY',2,1,'9999','QQ音乐'union
  select '说谎','SH',3,3,'8888','网易云'union
  select '借','J',4,2,'7777','QQ音乐'union
  select '烟雨行舟','YYXZ',5,4,'6666','QQ音乐'
--2.模糊查询歌手表里第二个字为'的'的歌曲
select singerID 歌手编号,singerName 歌手姓名,singerleixing 歌手类型,birthday 出生日期,dizhi 地址 from singer where singerName like '_的%'
--3.修改所有歌手的出生日期为具体的年龄
  update singer set birthday='56'where singerID=1
  update singer set birthday='45'where singerID=2
  update singer set birthday='38'where singerID=3
  update singer set birthday='20'where singerID=4
  update singer set birthday='25'where singerID=5
--4.使用排序对年龄和歌手编号进行排序
select singerID 歌手编号,singerName 歌手姓名,singerleixing 歌手类型,birthday 年龄,dizhi 地址 from singer order by birthday desc,singerID desc
--5.返回歌手表里年龄最小的四位歌手的信息
  select top 4 singerID 歌手编号,singerName 歌手姓名,singerleixing 歌手类型,birthday 年龄,dizhi 地址 from singer order by birthday
--6.查询歌手表里地区为台湾或者香港但必须都是男歌手的信息
  select singerID 歌手编号,singerName 歌手姓名,singerleixing 歌手类型,birthday 年龄,dizhi 地址 from singer where (dizhi='台湾'or dizhi='香港')and singerlei
--7.截取歌曲表里的歌曲名称前三个字
  select songName,substring(songName,1,3) as 歌曲名称 from song
--8.将歌手表里的歌手姓名进行顺序相反的输出
  select singerName, reverse(singerName) as 歌手姓名 from singer
--9.输出歌手表里的地区,并将台湾替换成台湾省
  select dizhi, replace(dizhi,'台湾','台湾省')as 地址 from singer
--10.查询歌手年龄在25岁至30岁之间的歌手信息,只查询歌手姓名、地区和年龄
  select singerName 歌手姓名,dizhi 地址,birthday 年龄 from singer where birthday between 25 and 30

五(下)

5.1字符串的函数

charindex函数

定义: 返回字符串的起始位置 语法:

charindex(需要返回的字符,字符串) 

left:返回从左边开始字符

left(字符串,长度)

right:返回从右边开始的字符

right(字符串,长度)

len:返回字符串的长度

len(内容)

5.2时间函数

5.2.1 getdate函数

定义:GETDATE函数返回系统的当前日期。GETDATE函数没有参数 语法:

getdate()
--eg:select getdate() as 当前系统时间

5.1.2day函数

定义:DAY函数返回一个整数,表示日期的“日”部分。 语法:

daydate)参数表示需要返回天数的日期

5.1.3MONTH函数

定义:返回一个整数,表示日期的“月”部分。 语法:

monthdate) 参数表示需要返回的月份

5.1.4YEAR函数

定义:返回一个整数,表示日期的“年”部分。 语法:

yeardate) 参数表示需要返回的年份

5.1.5DATEDIFF函数

定义:用于返回日期和时间的边界数

    DATEDIFF(datepart,startdate,enddate)
         --datepart 返回的类型比如天、月、日
         -- startdate 开始的时间
         --enddate 结束的时间
注意:如果开始时间比结束时间晚,返回的值是负值

5.1.6DATEADD函数

定义:将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的日期值。

DATEADD(datepart,number,date--datepart 时间中指定部分相加的参数如year、month、day
            --datepart 准确的相加数值 
            --datepart 需要相加的日期
注意:如果number不为整数值,则将弃此值的小数部分。

5.1.7POWER函数

定义:对数值表达式进行幂运算,运算结果必须为整数。 语法:

POWER(numeric_expression,power)
     --numeric_expression 需要进行计算的数值
     --power 次方数值

数学函数

5.1.8rand函数

定义:返回0-1之间的随机值,返回的值类型是小数类型 注意:如果未指定seed,则Microsoft SQL Server数据库引擎随机分配种子值。对于指定的种子值,返回的结果始终相同 语法:

RAND([seed])

5.1.9ROUND函数

定义:用于把数值字段舍入为指定的小数位数。 语法:

ROUND(numberic_expression,length, [ , function ])
                --第一个参数表示我要取值的数据
               -- 第二个参数表示数据的精度
                --第三个参数是表示我的取值模式

注意:当第三个取值不写的时候,它会以四舍五入的模式截取
          第一个参数不需要单引号或者双引号
          当三个参数写为0以外的时候,它会以截断的方式取值

什么是精度?

是指一个数字整体的长度 比如:0.123456789

什么是位数?

是指从小数位后的数值开始计算

转换函数

5.2CAST函数

定义:用于将某种数据类型的表达式显示的转换为另一种数据类型 语法:

CAST(expression as data_type)
    --需要转换的数值 as 数据类型

5.3CONVERT函数

定义:与CAST函数的功能相似。该函数不是一个ANSI标准SQL函数,它可以按照指定格式将数据转换为另一种数据类型。 语法:

CONVERT(data_type[(length)],expression[,style])
                --data_type[(length)] 数据类型
                --expression 数据内容
                --style 数据格式

convert函数是把日期转换为新数据类型的通用函数,并且可以用不同的格式显示日期、时间数据

作业

---1.   字符串函数
--查询 “我们都有一个家,名字叫中国” 中国是第几个字
 select charindex('中国','我们都有一个家,名字叫中国')
--写一句自己的座右铭,然后将座右铭的前3个字和后5个字拼接起来
 select left('闪电从不打在相同的地方,人不该被相同的方式伤害两次',3) + right('闪电从不打在相同的地方,人不该被相同的方式伤害两次',5)
--将“其实,我的意思就是想意思意思” 中的 意思 替换位 想法
 select replace('其实,我的意思就是想意思意思','意思','想法')
--将你的座右铭倒着显示出来(顺序相反查询)
 select reverse('闪电从不打在相同的地方,人不该被相同的方式伤害两次')
--截取你座右铭的第3到7的字符
 select substring('闪电从不打在相同的地方,人不该被相同的方式伤害两次',3,5)

---2.	日期函数
--获取当前时间
 select getdate()
--获取明年的今天
 select dateadd(year,1,getdate())
--获取今天是几号
 select day(getdate())
--计算你到今天已经过了多少天了
 select datediff(day,'1999-12-02',GETDATE())

---3.	数学函数
--显示 圆周率
 select PI()
--计算 2 的 40 次方
 select power(2,40)
--显示圆周率保留三位小数
 select round(PI(),3)
--取 1-41 的随机数   0-40
 select round(rand(),1)*40
 select cast(CEILING(rand()*40) as int)


---4.	转换函数
--以 2020-04-09 的格式显示当前时间 
 select cast(getdate() as date)
--以 2020-04-09 20:42:52 的格式显示当前时间
 select convert(nvarchar,getdate(),20)
--将数字 1 转换位 char(10)
 select convert(char(10),1)