【数据库知识扫描】 | SQL复习-中篇 第8课 使用函数处理数据

本文探讨了SQL中的函数使用,包括文本、日期和时间以及数值处理函数。虽然函数在不同DBMS中有差异,但它们在数据处理中扮演重要角色。举例介绍了如UPPER()、SOUNDEX()、YEAR()等函数的应用,强调了理解和适配不同DBMS的必要性。
摘要由CSDN通过智能技术生成

大部分内容是必知必会教材中的内容,不会因为我表述或者转述就变成我的文字,提供练习和截图仅为了回顾复习和相互督促,所以事先声明。

这一课学习什么是函数,DBMS支持何种函数,以及如何使用这些函数;还将了解到为什么SQL函数的使用可能会带来问题。

目录

 8.1 函数

8.2 使用函数

① 文本处理函数

② 日期和时间处理函数

③ 数值处理函数


 8.1 函数

终于讲到了函数,类比其他计算机语言,SQL同样使用函数处理数据。

由于不同的DBMS支持不同的函数,这句话怎么理解呢?也就是说SQL语句基本上都能够得到所有DBMS的支持,函数虽然可以在每个DBMS中应用,但具体的函数名称和语法,要参看文档。可以举个栗子看看,DBMS函数哪种不一样。

可移植(portable) 所编写的代码可以在多个系统上运行。

与SQL语句不一样,SQL函数不是可移植的。意味着为特定SQL实现编写的代码在其他实现中可能不正常。这也是为什么上一课中,MySQL的concat函数直接实现了“+连接符与RTRIM函数”所完成的工作。

函数使用问题:作者建议使用本身没有问题,应该保证做好代码注释,了解SQL代码的含义,便于后期维护或可移植。

8.2 使用函数

大多数SQL实现支持以下类型的函数。

用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文本函数。

用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数。

用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期之差,检查日期有效性)的日期和时间函数。

□ 返回DBMS正使用的特殊信息(如返回用户登录信息)的系统函数。

上一课函数作用于SELECT后面的列名,但函数的作用不仅于此。它还可以作为SELECT语句的其他成分,如在WHERE子句中使用,在其他SQL语句中使用等,后面会学习到更多的用法。

① 文本处理函数

使用的是UPPER()函数,将文本转换为大写。

SELECT vend_name ,UPPER(vend_name) AS vend_name_upcase FROM Vendors ORDER BY vend_name;

结果是确实将第一列vend_name的值全部大写了。再看看其他的文本处理函数LEFT()、LENGTH()、LOWER()等:

其中SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节,使得能对字符串进行发音比较而不是字母比较。虽然SOUNDEX不是SQL概念,但多数DBMS都提供对SOUNDEX的支持。

我们来跟进一个实例:Customers表中有一个顾客Kids Place,其联系名为Michelle Green。但如果这是错误的输入,此联系名实际上应该是MichaelGreen,该怎么办呢?显然,按正确的联系名搜索不会返回数据,那么我们来检索试试:

确实检索不到相关信息。

再加上SOUNDEX函数试试:

 过滤得到所需的结果。

② 日期和时间处理函数

日期和时间采用相应的数据类型存储在表中,每种DBMS都有自己的特殊形式。

日期和时间值以特殊的格式存储,以便能快速和有效排序或过滤,并且节省物理存储空间。应用程序一般不使用日期和时间的存储格式,因此日期和时间函数总是用来读取、统计和处理这些值。由于这个原因,日期和时间函数在SQL中具有重要的作用。遗憾的是,它们很不一致,可移植性最差

实例说话,Orders表中包含的订单都带有订单日期。为检索出2012年的所有订单:

文中基于不同DBMS做了演示,比如SQL Server、Access、PostgreSQL以及Oracle的其他类似日期处理函数:

MySQL具有各种日期处理函数,但没有DATEPART()。MySQL可使用名为YEAR()的函数从日期中提取年份。

比如,提取年份为2012的订单编号:

还有其他的日期-时间处理函数,参阅对应文档。

③ 数值处理函数

 数值处理函数仅处理数值数据。这些函数一般主要用于代数、三角或几何运算。

不像字符串或日期-时间处理函数使用那么频繁。在主要DBMS的函数中,数值函数最一致、最统一的函数。

这一课就跟完了,虽然这节课主要讲的是三个函数,但各有不同,文本、时间、数值是我们在日常生活中最常见的三类数据类型,在各种DBMS中虽都有对应实现,但具体用法各不相同,最后学习的数值处理函数,倒是较于其他函数来说,更为统一,所以在具体使用过程中,要考虑到差异性。

刻意练习,每日精进。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值