第十一章:使用数据处理函数

表:orders

字段:order_id order_name quantity item_price order_num order_date

1.函数:

用来处理数据的过程,上一章提到的RTrim()就是一个函数例子。

注:函数没有SQL的可移植性强。不同的DBMS支持的函数可能不同,所以在做数据迁移时,函数会是一个障碍。

为了解决这个问题,建议必须使用函数时,应当做好代码注释,以便以后能够比较清晰的了解整个SQL语义。

2.使用函数:

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

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

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

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

*返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本细节)的系统函数。

3.文本处理函数:

使用upper()函数,将字母全部转化为大写

SELECT order_name,Upper(order_name) AS upper_order_name FROM orders ORDER BY order_name

常用的文本处理函数:

函数

说明

Left()

返回串左边的字符

Length()

返回串的长度

locate()

找出串的一个子串

Lower()

将串转化为小写

LTrim()

去掉串左边的空格

Right()

返回串右边的字符

RTrim()

去掉右边的空格

Soundex()

返回串的SOUNDEX值

SubString()

返回子串的字符

Upper()

将串转化为大写

4.日期和时间处理函数:

常用时间和时间处理函数

函数

说明

AddDate()

增加一个日期(天、周等)

AddTime()

增加一个时间(时、分等)

CurDate()

返回当前日期

CurTime()

返回当前时间

Date()

返回日期时间和日期部分

DateDiff()

计算两个日期之差

Date_Add()

高度灵活的日期运算函数

Data_Format()

返回一个格式化的日期或时间串

Day()

返回一个日期的天数部分

DayOfWeek()

返回一个日期,返回对应的星期几

Hour()

返回一个时间的小时部分

Minute()

返回一个时间的分钟部分

Month()

返回一个时间的月份部分

Now()

返回当前日期和时间

Second()

返回一个时间的秒部分

Time()

返回一个日期时间的时间部分

Year()

返回一个日期的年份部分

基本日期比较:

SELECT order_id, order_num 
FROM orders 
WHERE order_date = '2015-09-01'

若此时,order_date为datetime类型,其格式是不满足仅仅只有日期的(该格式还包含时分秒),若想避免WHERE语句出现无法匹配的状况可以使用

SELECT order_id, order_num
FROM orders
WHERE Date(orderdate) = '2015-09-01'

查询2015年9月的所有订单

SELECT order_id, order_num 
FROM orders
WHERE Date(order_date) BETWEEN '2015-09-01' AND '2015-09-30'

或者通过下面的SQL实现

SELECT order_id, order_num
FROM orders
WHERE Year(order_date) = 2005 AND Month(order_date) = 9

5.数值处理函数:

常用数值处理函数

函数

说明

Abs()

返回一个数的绝对值

Cos()

返回一个数的余弦值

Exp()

返回一个数的指数值

Mod()

返回除操作的余数

Pi()

返回圆周率

Rand()

返回一个随机数

Sin()

返回一个数的正弦值

Sqrt()

返回一个数的平方根

Tan()

返回一个数的正切值

我个人而言,感觉这一章能用到的东西屈指可数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

初学Redis(3)——简单实现Redis缓存中的排序功能

http://blog.csdn.net/qtyl1988/article/details/39545531

411
来自专栏用户2442861的专栏

JdbcTemplate学习笔记(更新插入删除等)

4、使用JdbcTemplate进行查询时,使用queryForXXX()等方法 

521
来自专栏码洞

核心技术靠化缘是要不来的——自己动手写ORM框架

开源市场上的Java的ORM框架一个都不好用,所以花了几天时间自己撸了一个 OrmKids,欢迎大家下载学习。遇到问题请关注公众号进群大家一起讨论。

872
来自专栏互联网开发者交流社区

Oracle-函数大全

1275
来自专栏游戏开发那些事

【小白学C#】谈谈C#多播委托因异常而终止的解决方案

  前几天,马三在与朋友闲聊技术的时候,朋友忽然抛出一个问题,把马三难倒了,本着求知的精神,回来以后马三就查阅了相关资料并做了一些实验,终于把问题搞明白了,因此...

1223
来自专栏java架构师

【SQL Server】系统学习之三:逻辑查询处理阶段-六段式

一、From阶段 针对连接说明: 1、笛卡尔积 2、on筛选器 插播:unknown=not unknuwn 缺失的值; 筛选器(on where having...

32611
来自专栏C#

奇妙的NULL值,你知道多少

《NULL值的多义性分析》       谈到NULL值,很多人都是很熟悉,但是深入了解后,又感觉到陌生,对其含义和用法,都无法很准确的理解。NULL在数据库和...

1725
来自专栏数说戏聊

01.loc & iloc & ix 区别使用标签选取数据

当用行号索引的时候, 尽量用 iloc 来进行索引; 而用标签索引的时候用 loc , ix 尽量别用。

712
来自专栏F_Alex

(三)SpringBoot2.0基础篇- 持久层,jdbcTemplate和JpaRespository

1293
来自专栏Code_iOS

数据结构:链表

工程代码 Github: Data_Structures_C_Implemention -- Link List

811

扫码关注云+社区