SQLserver函数

文章介绍了SQL中的几个重要函数,包括IIF函数用于条件判断,DATEDIFF用于计算日期差,CASE...WHEN实现类似IF-ELSE的逻辑,SUBSTRING用于提取字符串部分,以及窗口函数RANK和DENSE_RANK在排序中的不同行为。此外,还提到了SQLServer2017及以上版本支持的STRING_AGG聚合函数,用于合并字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL函数

1.IIF 函数(等于mysql里的if函数)

IF/ELSE 语句是编程中最常用的控制流结构。SQL Server 以 IIF 函数的形式为我们的查询提供 IF/ELSE 语句的功能。

语法:

IIF(expression, value_if_true, value_if_false)

我们可以利用 IIF 函数将电影长度分为三类:Short(短)、Medium(中)和 Long(长),取决于它们的长度。我们将电影长度分类如下:

  1. Short:80 分钟以下

  2. Medium:80 至 120分钟之间

  3. Long:超过 120 分钟

我们使用 IIF() 函数将电影的长度与给定的表达式进行比较,并根据结果返回 1 或 NULL。如果返回 1,则将计入该列标题(Short、Medium 或 Long)下:
在这里插入图片描述

2.datediff函数

日期函数,用于计算两个日期的差

datediff(datepart,startdate,enddate)

datepart可以是年(y)月(m)日(d)时(h)等

3.case …when函数

等价于if else语句

语法:

1.
CASE sex

         WHEN '1' THEN '男'

         WHEN '2' THEN '女'

ELSE '其他' END
2.
CASE WHEN sex = '1' THEN '男'

     WHEN sex = '2' THEN '女'

ELSE '其他' END

4.substring 函数

返回SQL Server中的字符、二进制、文本或图像表达式中的一部分。

语法:

substring(expression,start,length)

解释:
start: 指定返回字符的起始位置的整数或bigint表达式。(编号从1开始,意味着表达式中的第一个字符为1)。如果start小于1,则返回的表达式的起始位置为表达式中指定的第一个字符。在这种情况下,返回的字符数是后两者中的较大值:start+length之和减去1,0.如果start大于值表达式中的字符数,将返回一个零长度的表达式
length: 是正整数或用于指定要返回的expression的字符数的bigint表达式。如果length是负数,会生成错误并终止语句。如果start和length的总和大于表达式中的字符数,则会返回从start开始的整个值的表达式

EG:
print SUBSTRING(‘Today is Monday’,2,5)
在这里插入图片描述

5.upper()、lower()函数

语法:

upper ( character_expression )
lower( character_expression )

eg:首字母大写:upper(substring(str,1,1))
剩下的小写:lower(substring(str,2,len(str)-1))

窗口函数

1、 排序函数

1、RANK()
在计算排序时,若存在相同位次,会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,4······

2、DENSE_RANK()
这就是题目中所用到的函数,在计算排序时,若存在相同位次,不会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,2······

语法:
<窗口函数> OVER ( ORDER BY <排序用列清单> )

聚合函数

1.string_agg函数

将多行结果字符串拼接到一行。(注意:sqlserver的版本需要2017及以上)

语法:

STRING_AGG ( expression, separator )
WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )

有2个参数,第1个是要合并的字段、表达式,第2个是用什么分隔符,比如:用逗号作为分隔符。

后面的order 子句,是对要合并的数据进行排序,可以升序、降序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值