首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL学习之使用常用函数处理数据

SQL学习之使用常用函数处理数据

作者头像
郑小超.
发布2018-01-24 15:24:57
1.8K0
发布2018-01-24 15:24:57
举报
文章被收录于专栏:GreenLeavesGreenLeaves

一、在介绍使用函数处理数据前,先说下使用DBMS(数据库管理系统)处理数据所带来的问题!

1、与几乎所有的DBMS都同等的支持SQL语句(如SELECT)不同,每一个DBMS都有特定的函数,事实上,只有少数几个函数被所有主要的DBMS等同的支持。

比如,像提取字符串的组成部分,ACESS使用MID();DB2、Oracle、Postgre和SQLite使用SUBSTR(),而MySQL和SQL SERVER使用SUBSTRING();

比如,数据类型的转换,Access和Oracle使用多个函数,每种类型的转换有一个函数;DB2和PostgreSQL使用Cast();MariaDB、MySQL和SQL Server使用CONVERT();

比如,获取当前日期,Access使用Now();DB2和PostgreSQL使用CURRENT_DATE;MariaDB和MySQL使用CURDATE();Oracle使用SYSDATE,SQL Server使用GETDATE(),SQLite使用DATE();

通过上面的例子我们可以看出,与SQL语句不一样,SQL函数是不可以移植的。这意味这特定SQL实现编写的代码在其他实现中可能不正常。

所以如果你在编写SQL程序的时候,需要考虑程序的可移植性,那么你在使用函数的时候一定要慎重,因为这些函数,在某些环境中可能没被实现,所以你在编写SQL代码的时候一定要写好注释,来说名这段代码是干嘛用的!以便于后续的开发或者库之间的移植!

2、下面是大多数SQL实现并支持一下的函数

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

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

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

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

下面是常用的文本处理函数

1、LEFT()      ---返回字符串左边的字符

用法LEFT(计算字段,index),index表示向左查找开始的索引  如下代码:

select  cname,cno,tno from dbo.course where cno='c001'

现在我需要cname列值中'S'左边的字符串,下面是解决代码:

select LEFT(cname,2),cno,tno from dbo.course where cno='c001'
image.png
image.png

ok,完成需求!

2、RIGHT()   ---返回字符串右边的字符

用法和LEFT()方法相反

3、LENGTH() (也可以使用DATALENGTH()或LEN())      ---返回字符串的长度    SQL Server中可以使用DATALENGTH和LEN()

用法:如下代码:

select DATALENGTH(cname),cno,tno from dbo.course where cno='c001'

4、 文本处理函数之UPPER()函数      ---将字符串转为大写

用法:UPPER(计算字段),将计算字段所在的列值全部转换成大写字母,看如下代码:

select top 5 cname,cno,tno from dbo.course
image.png
image.png

现在有一个需求,需要将cname列值全部转换成大写,下面是解决代码:

select top 5 UPPER(cname),cno,tno from dbo.course

ok,需求完成!

6、文本处理函数之LOWER()函数      ---将字符串转换成小写

用法和UPPER()函数相反!

7、SOUNDEX()      ---返回字符串的SOUNDEX值

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

select * from student where sname='Michael Green'

这个时候我们忘记sname的列值怎么拼了,只记得他的读音,这个时候使用SOUNDEX()函数就同样能检索出这条记录,代码如下:

select * from dbo.student where SOUNDEX(sname)=SOUNDEX('Michelle Green')

ok,完成检索!

8、日期和时间处理函数DATEPART()函数

在使用日期和时间处理函数编写程序前,需要注意一点,不同的DBMS都有自己特有的时间和日期格式,所以他们很不一致,可移植也非常差!

有如下代码:

select * from tb_order

现在有一个需求,需要检索2016年的所有订单数,下面是解决代码:

select * from tb_order where DATEPART(YY,orderdate)=2016

ok,需求完成!

9、下面是常用的数值处理函数

ABS()      ---返回一个数的绝对值

COS()      ---返回一个角度的余弦

EXP()      ---返回一个数的指数值

PI()      ---返回圆周率

SIN()      ---返回一个角度的正弦

SQRT()      ---返回一个数的平方根

TAN()      ---返回一个角度的正切

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-08-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档