SOL Server 数据操作与查询
第五章 函数的使用
前言:
本章主要介绍 SOL 常用函数的使用方法,可作参考。
目录
一、字符串函数
1. replace(代替) 函数:替换字符串
代码如下(示例):
---语法如下
use data(数据库名)
select replace('character_expression'(原字符串),'searchstring'(要替换的字符串),'replacementstring'(要替换成的字符串))
---实例
--将"MingMing"中的"ing"换成"i"
use sun
select replace('MingMing','ing','i') as '替换结果'(别名)
--结果
MiMi
2. reverse(反转) 函数:反转字符串
代码如下(示例):
---语法如下
use data(数据库名)
select reverse('character_expression'(需反转的字符串))
---实例
--反转"MingMing"
use sun
select reverse('MingMing') as '反转结果'(别名)
--结果
gniMgniM
3. str 函数:转换有数字数据的字符串
代码如下(示例):
---语法如下
use data(数据库名)
select str('float_expression'(带小数的数字数据类型字符串),'length'(返回字符串的长度),'decimal'(需保留的小数位数))
---实例
--返回"123.45"
use sun
select str('123.45','5','1')
--结果
123.5
4. substring(截取) 函数:返回指定个数的字符串
代码如下(示例):
---语法如下
use data(数据库名)
select 需截取的列名 substring('value_expression'(需截取的列名),'start_expression'(开始截取的位置),'length_expression'(截取的长度))
---实例
--在 employee 表 name 中从第1位开始截取长度为2的字符串
use sun
select name,substring('name','1','2')
--结果
张逸杰(原名) ———— 张逸(截取后显示的结果)
二、日期函数和时间函数
1. getdate 函数:返回当前系统日期和时间
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select getdate() as 当前系统时间
2. day 函数:返回一个整数,日期“日”的部分
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select day('年-月-日') as 天(day)
---实例
(use sun:需数据库在使用)
select day('2021-02-21') as 天
--结果
21
3. month 函数:返回日期中“月”的整数
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select month('年-月-日') as 月
---实例
(use sun:需数据库在使用)
select month('2021-04-26') as 月
--结果
4
4. year 函数:返回日期中“年”的整数
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select year('年-月-日') as 年
---实例
(use sun:需数据库在使用)
select year('2021-05-28') as 年
--结果
2021
5. datediff 函数:返回日期和时间的边界数(时间差)
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select datediff(datepart(时间类型,如:年、月、日),startdate(开始时间),enddate(结束时间))
---实例
(use sun:需数据库在使用)
select datediff(day,'2020-02-18','2020-04-18') as 天
select datediff(month,'2020-01-01','2021-01-01') as 月
select datediff(year,'2013-08-06','2021-08-06') as 年
--结果
天:60
月:12
年:8
注意:
开始时间比结束时间晚,返回值为负值
6. dateadd 函数:日期或时间间隔的数值与指定日期部分相加后的结果(number不为整数时废弃小数部分)
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select dateadd(datepart(事件类型:年、月、日等),number(要增加的准确数值),date(返回日期或日期格式的字符串表达式))
---实例
(use sun:需数据库在使用)
select dateadd(day,3,getdate()(当前系统时间)) as 增加3天
select dateadd(month,6,getdate()(当前系统时间)) as 增加6个月
select dateadd(year,10,getdate()(当前系统时间)) as 增加10年
--结果
天:2021-08-17(当前系统时间)——2021-08-20(增加后显示的时间)
月:2021-08-17(当前系统时间)——2022-02-17(增加后显示的时间)
年:2021-08-17(当前系统时间)——2031-08-17(增加后显示的时间)
三、数学函数
1. power 函数:进行次方幂运算,运算结果为整数
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select power(number(整数),power(次方))
---实例
(use sun:需数据库在使用)
select power(2,2) as 2的平方结果
select power(2,3) as 2的3次方结果
select power(2,4) as 2的4次方结果
--结果
平方:4
3次方:8
4次方:16
2. rand 函数:返回0~1之间的随机数(folat:浮点类型)
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select rand([seed]:种子值,任何整数)
---实例
(use sun:需数据库在使用)
select rand(100)
select rand(30)
select rand()
--结果
100:0.715436...
30:0.714312...
0:0.094053...
3. round 函数:四舍五入为指定的小数位数(小数最后的一个0不算)
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select round(number(小数),length(保留的小数位数),[,function]:为0时要四舍五入,不为0时不用四舍五入)
---实例
(use sun:需数据库在使用)
select round(123.6543,3)
select round(123.6548,3)
select round(123.6548,3,1)
--结果
0:123.6540
0:123.6550
1:123.6540
四、转换函数
1. cast 函数:将某种数据类型转换为另一种数据类型(隐性转换,系统转换)
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select cast(需转化的值 as(作为,转换) 要转换成的值(目标系统提供的数据类型))
---实例
(use sun:需数据库在使用)
select cast('mingrikeji' as nvarchar(6))
--结果
MINGRI
2. convert 函数:按指定格式将数据转换为另一种数据类型(显性转换,手动转换)
代码如下(示例):
---语法如下
(use data(数据库名):需数据库在使用)
select convert(data_type(目标系统提供的数据类型)[(length)],expression(参数)[,style(日期样式)] )
---实例
(use sun:需数据库在使用)
select convert(nvarchar,getdate(),126)
--结果
2021-08-17T17:37:52
注意:
style 日期样式:
样式 | 说明 | 输入/输出格式 |
126 | ISO8601 | yyyy-mm-ddThh:mm:ss:mmm(不含空格) |
yyyy:年 mm:月 dd:日 hh:小时 mm:分 ss:秒 mmm:毫秒