1、在介绍使用函数处理数据前,先说下使用DBMS(数据库管理系统)处理数据所带来的问题!算法
一、与几乎全部的DBMS都同等的支持SQL语句(如SELECT)不一样,每个DBMS都有特定的函数,事实上,只有少数几个函数被全部主要的DBMS等同的支持。数据库
好比,像提取字符串的组成部分,ACESS使用MID();DB二、Oracle、Postgre和SQLite使用SUBSTR(),而MySQL和SQL SERVER使用SUBSTRING();函数
好比,数据类型的转换,Access和Oracle使用多个函数,每种类型的转换有一个函数;DB2和PostgreSQL使用Cast();MariaDB、MySQL和SQL Server使用CONVERT();spa
好比,获取当前日期,Access使用Now();DB2和PostgreSQL使用CURRENT_DATE;MariaDB和MySQL使用CURDATE();Oracle使用SYSDATE,SQL Server使用GETDATE(),SQLite使用DATE();code
经过上面的例子咱们能够看出,与SQL语句不同,SQL函数是不能够移植的。这意味这特定SQL实现编写的代码在其余实现中可能不正常。
blog
因此若是你在编写SQL程序的时候,须要考虑程序的可移植性,那么你在使用函数的时候必定要慎重,由于这些函数,在某些环境中可能没被实现,因此你在编写SQL代码的时候必定要写好注释,来讲名这段代码是干吗用的!以便于后续的开发或者库之间的移植!索引
二、下面是大多数SQL实现并支持一下的函数开发
(1)用于处理文本字符串(如删除或者填充,转换值为大写或者小写)的文本函数。字符串
(2)用于在数值数据上进行算术操做(如返回绝对值,进行代数运算)的数值函数。it
(3)用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期之差,检查日期的有效性)的日期和时间函数。
(4)返回DBMS正使用的特殊信息(如返回用户登陆信息)的系统函数
下面是经常使用的文本处理函数
一、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'
ok,完成需求!
二、RIGHT() ---返回字符串右边的字符
用法和LEFT()方法相反
三、LENGTH() (也可使用DATALENGTH()或LEN()) ---返回字符串的长度 SQL Server中可使用DATALENGTH和LEN()
用法:以下代码:
select DATALENGTH(cname),cno,tno from dbo.course where cno='c001'
四、 文本处理函数之UPPER()函数 ---将字符串转为大写
用法:UPPER(计算字段),将计算字段所在的列值所有转换成大写字母,看以下代码:
select top 5 cname,cno,tno from dbo.course
如今有一个需求,须要将cname列值所有转换成大写,下面是解决代码:
select top 5 UPPER(cname),cno,tno from dbo.course
ok,需求完成!
六、文本处理函数之LOWER()函数 ---将字符串转换成小写
用法和UPPER()函数相反!
七、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,完成检索!
八、日期和时间处理函数DATEPART()函数
在使用日期和时间处理函数编写程序前,须要注意一点,不一样的DBMS都有本身特有的时间和日期格式,因此他们很不一致,可移植也很是差!
有以下代码:
select * from tb_order
如今有一个需求,须要检索2016年的全部订单数,下面是解决代码:
select * from tb_order where DATEPART(YY,orderdate)=2016
ok,需求完成!
九、下面是经常使用的数值处理函数
ABS() ---返回一个数的绝对值
COS() ---返回一个角度的余弦
EXP() ---返回一个数的指数值
PI() ---返回圆周率
SIN() ---返回一个角度的正弦
SQRT() ---返回一个数的平方根
TAN() ---返回一个角度的正切