第 4 部分:其他函数
最后一类重要的 SQL Server 函数包括那些处理 NULL、转换和控制流的函数。这些函数绝不是剩菜,是你可能会遇到的最有用的函数之一!
COALESCE
每当你选择值不是强制性的列时,你肯定会遇到 NULL 值。这是有道理的,因为 NULL 值表示没有值或缺少的信息。麻烦的是,如果将 NULL 值包括在计算以及可能对列数据执行的其他操作中,则可能会造成严重破坏。
COALESCE 函数接受一个参数列表,并返回不包含空值的第一个参数。 因此,SQL Server 会遍历你提供的每个输入参数,直到遇到一个不为 NULL 的参数或者只是遍历了所有参数。这是它的语法:
COALESCE(val1, val2, ...., val_n)
用零代替 NULL 值是很平常的事。在某些情况下,不同的值可能更有意义。例如,Sakila 示例数据库的 film 表中有一个名为 original_language_id 的列,用于非英语的电影。每当找到 NULL 值时,我们可以使用 COALESCE 将其值设置为 1(英语的 language_id):
![coalesce (53K)](/link/Blog/Image/2021/20210524/coalesce.jpg)
CONVERT
将输出值转换为指定的数据类型是在意料之中的数据库工作。在 SQL Server 中,可以使用 CONVERT 函数将值的数据类型更改为另一种。它的语法很简单:
CONVERT(type, value)
使用 CONVERT 的一个很好的理由是从 datetime 字段中删除时间部分。以下的查询以原始日期时间格式显示相同的字段,但没有时间部分:
![convert (73K)](/link/Blog/Image/2021/20210524/convert.jpg)
IIF
IF/ELSE 语句是编程中最常用的控制流结构。SQL Server 以 IIF 函数的形式为我们的查询提供 IF/ELSE 语句的功能。它的语法是:
IIF(expression, value_if_true, value_if_false)
我们可以利用 IIF 函数将电影长度分为三类:Short(短)、Medium(中)和 Long(长),取决于它们的长度。我们将电影长度分类如下:
- Short:80 分钟以下
- Medium:80 至 120分钟之间
- Long:超过 120 分钟
我们使用 IIF() 函数将电影的长度与给定的表达式进行比较,并根据结果返回 1 或 NULL。如果返回 1,则将计入该列标题(Short、Medium 或 Long)下:
![iif (38K)](/link/Blog/Image/2021/20210524/iif.jpg)
总结
这是有关最重要的 SQL Server 函数的系列文章的结尾。如本系列开头所述,了解特定数据库类型的确切函数名和签名会有所帮助,因为它们在不同供应商之间可能会有所不同。例如,IIF 函数仅在 Microsoft 产品中可以找到。
如果你对 Navicat for SQL Server感兴趣,可以免费试用 14 天!
Rob Gravelle 居住在加拿大渥太华,是一名有 20 多年经验的 IT 专家。过往,Rob 曾为与情报有关的组织(如加拿大边境服务局和各种商业组织)构建系统。在业余时间,Rob 是一名出色的吉他演奏家,并发行了 几张 CD。