sql学习之使用数据处理函数

        sql函数存在问题:
          每个dbms都有自己特定的函数,事实上,只有少数几个函数被所有主要的DBMS等同的支持,与sql语句不一样,sql函数不是可移植的
       那么,是否应该使用函数,决定权在于我们自己,如果决定使用函数,应该保证做好代码注释,以便以后能确切地知道所编写的sql代码的含义
       那么现在我们简单学习下怎么使用sql函数吧
       大多数sql实现支持以下类型的函数:
       1用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数.
       2用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数
       3用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)的日期和时间函数
       4返回dbms正在使用的特殊信息(如返回用户登录信息)的系统函数.
      

       文本处理函数
        例select vend_name ,UPPER(vend_name) AS vend_name_upcase from Vendors order by vend_name;
         可看出搜索出来的结果是两列,第二列为第一列转换为大写
       注 :常用文本处理函数
    
常用文本处理函数
函数说明
LEFT()(或使用子字符串函数)返回串左边的字符
length()(也使用DATALENGTH()或LEN())
返回串的长度
LOWER()(access使用LCASE())
将串转换为小写
LTRIM()
去掉串左边空格
RIGHT()(或使用子字符串函数)
返回串右边字符
RTRIM()
去掉串右边空格
SOUNDEX()
返回串的SOUNDEX值
UPPER()(Access使用UCASE())
将串转换为大写

       其中SOUNDEX是一个将任何文本转换为语音表示的字母数字模式算法,他考虑了类似的发音字符或音节,使得能对串进行发音比较而不是字母比较
       比如Customers表中有个顾客KID Place,联系名为Michelle Green,但是如果这事输入错误,实际联系名为Michael Green,显然安正确的联系名搜索不会返回数据
       那么我们尝试下使用SOUNDEX(),他匹配所有发音类似Michael Green 的联系名
       sleect cust_name,cust_contact from Customers where SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
       日期和时间处理函数
    
日期和时间采用相应的数据类型存储在表中,每种DBMS都有自己的变体,不幸的是,他们很不一致,移植性很差,比如在SQL Server和Sybase中检索2004年的所有订单,为select order_num From Orders where DATEPART(yy,order_date) =2004;
   
在Access中则应该select order_num from Orders where DATEPART('yyyy',order_date)=2004;
       在PostgreSQL中则应该 select order_num from Orders where DATE_PART('year',order_date)=2004;
       Mysql具有各种日期处理 函数,但是没有DATEPART.Mysql用户可使用YEAR()的函数从日期中提取年份
       select order_num from Orders where YEAR(order_date) = 2004;
       Oracle也没有DATEPART函数,不过有几个可用来完成相同检索的日期处理函数
       如select order_num from Orders where to_number(to_char(order_date,'YY'))=2004;
       或者select order_num from Orders where order_date BETWEEN to_date('01-JAN-2004') AND to_date('31-DEC-2004');
       数值处理函数
   
常用数据处理函数
ABS()
返回一个数的绝对值
COS()
返回1个角度的余弦
EXP()
返回1个数的指数值
PI()
返回圆周率
SIN()
返回1个角度的正弦
SQRT()
返回1个数的平方根
TAN()
返回1个角度的正切

       在主要的dbms中数值函数是最一直最统一的函数
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值