读书笔记--SQL必知必会08--使用函数处理数据
8.1 函数
每个DBMS都有特定的函数。事实上,只有少数的几个函数被所有主要DBMS同时支持。
实现同一功能的函数,在不同的DBMS中的名称和语法极有可能不同,也就是说SQL函数不可移植的。
可移植(portable),所编写的代码可以在多个系统上运行。
根据实际需要谨慎使用函数,并确保做好代码注释,便于以后的理解和维护。
8.2 使用函数
大多数SQL支持以下类型的函数:
8.2.1 文本处理函数
例如:将文本转换为大写的UPPER()函数
MariaDB [sqlbzbh]> SELECT vend_name, UPPER(vend_name) AS vend_name_upcase FROM Vendors ORDER BY vend_name;
+-----------------+------------------+
| vend_name       | vend_name_upcase |
+-----------------+------------------+
| Bear Emporium   | BEAR EMPORIUM    |
| Bears R Us      | BEARS R US       |
| Doll House Inc. | DOLL HOUSE INC.  |
| Fun and Games   | FUN AND GAMES    |
| Furball Inc.    | FURBALL INC.     |
| Jouets et ours  | JOUETS ET OURS   |
+-----------------+------------------+
6 rows in set (0.00 sec)
MariaDB [sqlbzbh]>
例如:SOUNDEX()函数可以匹配所有类似发音的数据。
MariaDB [sqlbzbh]> SELECT cust_name, cust_contact FROM Customers;
+---------------+--------------------+
| cust_name     | cust_contact       |
+---------------+--------------------+
| Village Toys  | John Smith         |
| Kids Place    | Michelle Green     |
| Fun4All       | Jim Jones          |
| Fun4All       | Denise L. Stephens |
| The Toy Store | Kim Howard         |
+---------------+--------------------+
5 rows in set (0.00 sec)
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> SELECT cust_name, cust_contact FROM Customers WHERE cust_contact = 'Michael Green';
Empty set (0.00 sec)
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> SELECT cust_name, cust_contact FROM Customers WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
+------------+----------------+
| cust_name  | cust_contact   |
+------------+----------------+
| Kids Place | Michelle Green |
+------------+----------------+
1 row in set (0.00 sec)
MariaDB [sqlbzbh]>
8.2.2 日期和时间处理函数
日期和时间处理函数虽然非常重要,但在各个DBMS中很不一致,可移植性最差。
大多数DBMS具有比较日期、日期运算、选择日期格式等函数。
在MySQL和MariaDB中,也具有各种日期处理函数,例如:YEAR()函数可以从日期中提取年份。
MariaDB [sqlbzbh]> SELECT * FROM Orders;
+-----------+---------------------+------------+
| order_num | order_date          | cust_id    |
+-----------+---------------------+------------+
|     20005 | 2012-05-01 00:00:00 | 1000000001 |
|     20006 | 2012-01-12 00:00:00 | 1000000003 |
|     20007 | 2012-01-30 00:00:00 | 1000000004 |
|     20008 | 2012-02-03 00:00:00 | 1000000005 |
|     20009 | 2012-02-08 00:00:00 | 1000000001 |
+-----------+---------------------+------------+
5 rows in set (0.00 sec)
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> SELECT order_num FROM Orders WHERE YEAR(order_date) = 2012;
+-----------+
| order_num |
+-----------+
|     20005 |
|     20006 |
|     20007 |
|     20008 |
|     20009 |
+-----------+
5 rows in set (0.00 sec)
MariaDB [sqlbzbh]>
8.2.3 数值处理函数
数值处理函数仅仅处理数值数据。
一般主要用于代数、三角或几何运算,使用不频繁。
在主要的DBMS中,数值函数最一致,可移植性最高。
常见的数值处理函数:
ABS() --- 返回一个数的绝对值
COS() --- 返回一个角度的余弦
EXP() --- 返回一个数的指数值
PI() --- 返回圆周率
SIN() --- 返回一个角度的正弦
SQRT() --- 返回一个数的平方根
TAN() --- 返回一个角度的正切
MariaDB [sqlbzbh]> SELECT ABS(-9);
+---------+
| ABS(-9) |
+---------+
|       9 |
+---------+
1 row in set (0.00 sec)
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> SELECT PI();
+----------+
| PI()     |
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)
MariaDB [sqlbzbh]>
												
											读书笔记--SQL必知必会08--使用函数处理数据的更多相关文章
- 读书笔记汇总 - SQL必知必会(第4版)
		
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
 - 读书笔记--SQL必知必会18--视图
		
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
 - 读书笔记--SQL必知必会--建立练习环境
		
书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...
 - 读书笔记--SQL必知必会12--联结表
		
12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...
 - SQL语法语句总结(《SQL必知必会》读书笔记)
		
一.SQL语句语法 ALTER TABLE ALTER TABLE 用来更新已存在表的结构. ALTER TABLE tablename (ADD|DROP column datatype [NULL ...
 - 《mysql必知必会》读书笔记--存储过程的使用
		
以前对mysql的认识与应用只是停留在增删改查的阶段,最近正好在学习mysql相关内容,看了一本书叫做<MySQL必知必会>,看了之后对MySQL的高级用法有了一定的了解.以下内容只当读书 ...
 - MySQL必知必会1-20章读书笔记
		
MySQL备忘 目录 目录 使用MySQL 检索数据 排序检索数据 过滤数据 数据过滤 用通配符进行过滤 用正则表达式进行搜索 创建计算字段 使用数据处理函数 数值处理函数 汇总数据 分组数据 使用子 ...
 - 《SQL必知必会》学习笔记二)
		
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
 - MySQL使用和操作总结(《MySQL必知必会》读书笔记)
		
简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机——服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...
 - 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作
		
上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...
 
随机推荐
- 试试SQLSERVER2014的内存优化表
			
试试SQLSERVER2014的内存优化表 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技 ...
 - boosting、adaboost
			
1.boosting Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数.他是一种框架算法,主要是通过对样本集的操作获 ...
 - iOS审核这些坑,腾讯游戏也踩过
			
作者:Jamie,专项技术测试工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. WeTest 导读 在App上架苹果应用商店的过程中,相信大多数iOS开 ...
 - MVC常遇见的几个场景代码分享
			
本次主要分享几个场景的处理代码,有更好处理方式多多交流,相互促进进步:代码由来主要是这几天使用前端Ace框架做后台管理系统,这Ace是H5框架里面的控件效果挺多的,做兼容也很好,有点遗憾是控件效果基本 ...
 - CRL快速开发框架系列教程三(更新数据)
			
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
 - Log4net - 规则简介
			
参考页面: http://www.yuanjiaocheng.net/CSharp/csharprumenshili.html http://www.yuanjiaocheng.net/entity/ ...
 - 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1
			
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
 - MySQL数据库罕见的BUG——Can't get hostname for your address
			
在连接mysql jdbc时候,抛出了 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communicat ...
 - Android NDK debug 方法
			
最近又频繁遇到 NDK 的错误,记录一下debug调试的一些经验,以备后续查看 一般来说,在Android Studio中的Monitor中将过滤器的 LOG TAG 设置为 "DEBUG& ...
 - 用apt-file解决找不到头文件的问题
			
在编译C语言的开源项目的时候,经常会出现头文件找不到的问题. 解决这类问题有一个特别好用的工具apt-file 1.在ubuntu下安装 sudo apt install apt-file 2.更新索 ...