天天看点

《锋利的SQL(第2版)》——1.7 常用函数

本节书摘来自异步社区出版社《锋利的sql(第2版)》一书中的第1章,第1.7节,作者:张洪举 王晓文,更多章节内容可以访问云栖社区“异步社区”公众号查看。

锋利的sql(第2版)

为满足通常的程序设计需要,transact-sql语言提供了非常丰富的函数,包括聚合函数、配置函数、游标函数、日期和时间函数、数学函数等。本节将介绍一些常用的函数类型。

聚合函数对一组值执行计算并返回单个值。除了count以外,聚合函数都会忽略空值。聚合函数经常与select语句的group by子句一起使用。

《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数

例如,下面的语句使用count函数来获取employee表中的员工数量。

又如,下面的语句使用sum函数计算salesorderdetail表中的销售总额。

配置函数用于返回当前配置选项的设置信息。

《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数

例如,下面的语句使用@@language函数返回当前会话的语言名称。

select @@language as 语言名称;

游标函数用于返回有关游标的信息。

《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数

下面的示例使用@@fetch_status函数和while循环,逐步检索游标中的行,直至检索完毕。

1.7.4 日期和时间函数

日期和时间函数用于对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。

《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数

数学函数根据提供的输入值执行计算后返回一个数值。其中,算术函数(如abs、ceiling、degrees、floor、power、radians和sign)返回与输入值相同数据类型的值。三角函数和其他函数(包括exp、log、log10、square和sqrt)将输入值转换为float并返回float值。

《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数

1.7.6 数据类型转换函数

数据类型转换函数仅包括cast和convert函数,二者的功能类似。使用这两个函数可以显式地将一种数据类型的表达式转换为另一种数据类型的表达式。

下面分别是cast和convert函数的语法格式:

cast ( expression as data_type [ (length ) ])

convert ( data_type [ ( length ) ] , expression [ , style ] )

expression是任何有效的表达式。data_type是目标数据类型(仅限于系统数据类型),包括xml、bigint和sql_variant。length是nchar、nvarchar、char、varchar、binary或varbinary数据类型的可选参数,对于convert函数,如果未指定length,则默认为30个字符。

style用于以下三个方面。

指定在将datetime或smalldatetime数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)时的日期格式的样式。

用于将float、real、money或smallmoney数据转换为字符数据时的字符串格式的样式。

用于指定二进制和字符型十六进制值之间数据转换时的格式(仅限于sql server 2008)。

表1-18列出了将datetime或smalldatetime数据转换为字符数据时的可用值。左侧的两列是style的值,将style值加100,将返回包括世纪数的四位年份格式。

《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数

表1-19列出了在将float或real转换为字符数据时的style可用值。

《锋利的SQL(第2版)》——1.7 常用函数

表1-20列出了在将money或smallmoney转换为字符数据时的style可用值。

《锋利的SQL(第2版)》——1.7 常用函数

在将numeric或decimal数据转换为字符数据时,如果要删除结果集尾随的零,可以使用128作为style的值。

表1-21列出了在将字符串转换为xml数据时的style可用值。

《锋利的SQL(第2版)》——1.7 常用函数

下面的语句使用cast函数将production.product表中的listprice列由money转换为varchar数据类型。

返回的结果类似下列形式:

使用convert函数同样可以实现上面的功能,参考下面的语句。

表1-22列出了二进制和字符型十六进制值转换时的style可用值。

《锋利的SQL(第2版)》——1.7 常用函数

参考下面的示例代码:

结果如图1-5所示。

《锋利的SQL(第2版)》——1.7 常用函数

使用字符串函数可以对字符串输入值进行剪裁、替换等操作,并返回字符串或数值。字符串函数及其功能如表1-23所示。

《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数
《锋利的SQL(第2版)》——1.7 常用函数

使用文本和图像函数可以对文本或图像输入值或列执行操作。文本和图像函数及其功能如表1-24所示。

《锋利的SQL(第2版)》——1.7 常用函数

从sql server 2012开始,增加了iif和choose两个逻辑函数。这两个函数都是非标准的,目的是为了支持更容易地从microsoft access数据库进行迁移。函数功能如表1-25所示。

《锋利的SQL(第2版)》——1.7 常用函数