ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQl 单行函数

SQl 单行函数

原创 Linux操作系统 作者:pennypengy 时间:2011-04-29 16:41:48 0 删除 编辑

一.SQL中的函数分为单行函数和多行(聚合)函数。
   单行函数的输入是一行,每行返回一个结果,可以被嵌套,输入参数可以是一个列的名字,可以是表达式,也可以是一个常数。
   
二.单行函数包括:(1)汇总函数;(2)日期与时间函数;(3)数学函数;(4)字符函数;(5)转换函数;(6)其它函数

 (1)日期/时间函数
      日期格式:DD-MON-RR
      ADD_MONTHS('31-JAN-96',1)='29-FEB-96':将给定的日期增加n个月;
      NEXT_DAY('01-SET-95','FRIDAY')='08-SEP-95':返回与指定日期在同一个星期或之后一个星期内的,你所要求的星期天数的确切日期;
      LAST_DAY('01-FEB-95')='28-FEB-95':返回指定月份的最后一天;
      MONTHS_BETWEEN('01-SEP-95','11-JAN-94')=19.6774194:返回给定的两个日期中有多少个月;
      ROUND('25-JUL-03','MONTH')='01-AUG-03'
      ROUND('25-JUL-03','YEAR')='01-JAN-04'
      TRUNC('25-JUL-03','MONTH')='01-JUL-03'
      TRUNC('25-JUL-03','YEAR')='01-JAN-03'
      NEW_TIME():把时间调整到你所在的时区;     
      SYSDATE:返回系统的日期和时间;
       如: SELECT last_name,TRUNC((SYSDATE-hire_date)/7,0) AS WEEKS
            FROM employees
            WHERE department_id=90;
     
 (2)字符函数
      INITCAP('SQL Course'):将参数的第一个字母变为大写,此外其它的字母则转换成小写;
      LOWER('SQL Course'):将参数全部转换为小写字母;
      UPPER('SQL Course'):将参数全部转换为大写字母;
    
     字符串操作函数:
    
      CONCAT('Hello','World')=HelloWorld:
                 将两个字符串连接起来,和“||”的功能类似;
      LPAD(salary,10,'*')=*****24000
      RPAD(salary,10,'*')=24000*****:
                 这两个函数最少需要两个参数,最多需要三个参数。每一个参数是需要处理的字符串,
                 第二个参数是需要将字符串扩充的宽度,第三个参数表示加宽部分用什么字符来做填补,
                 第三个参数的默认值为空格,但也可以是单个的字符或字符串。
      LTRIM('H' FROM 'HelloWorld')=elloWorld
      RTRIM('l' FROM 'HelloWorld')=HelloWord:
                 这两个函数至少需要一个参数,最多允许两个参数。第一个参数是需要处理的字符串,
                 第二个参数也是一个字符或字符串,默认则是空格。如果第二个参数不是空格的话,
                  那么该函数将会像剪除空格那样剪除所指定的字符。
      REPLACE('JACK and JUE','J','BL')=BLACK and BLUE:
                         该函数需要三个参数,第一个参数是需要搜索的字符串,第二个参数是搜索的内容,第三个参数则
                         是需要替换成的字符串,如果第三个参数省略或者是NULL,那么将只执行搜索操作而不会
                         替换任何内容。
      SUBSTR('HelloWorld',1,5)=Hello:
               该函数有三个参数,允许你将目标字符串的一部分输出。第一个参数为目标字符串,第二个字符串是
               将要输出的子串的起点,第三个参数是将要输出的子串的长度。
      INSTR('HelloWorld','W')=6:
               该函数有三个参数,第一个参数是目标字符串,第二个参数是匹配的内容,第三和第四个参数是数字,
               用以指定开始搜索的起点以及指出第几个满足条件的将会被返回。
      LENGTH('HelloWorld')=10:该函数将返回指定字符串的长度。
      CHR():该函数返回与所给数值参数相当的字符,返回的字符取决于数据库所依赖的字符集;
      TRANSLATE():该函数有三个参数:目标字符串,源字符串和目的字符串,在目标字符串与源字符串中均出现的字符
                   将会被替换成对应的目的字符串的字符。
                  
          如 SELECT employee_id,CONCAT(first_name,last_name) Name,job_id,LENGTH(last_name),
                    INSTR(last_name,'a') "Contains 'a'?"
             FROM employees
             WHERE SUBSTR(job_id,4) = 'REP';
            
 (3)数字函数
      ROUND(45.926,2) = 45.93:四舍五入
      TRUNC(45.926,2) = 45.92:直接砍掉,不用四舍五入
      MOD(1600,300)=100:取余数
            
 (4)转换函数
      TO_CHAR():该函数的最初功能是将一个数字转换为字符型,不同的解释器可能会使用它来转换其它的数据类型,
                例如日期型转换为字符型:
                    TO_CHAR(hire_date,'MM/YY'),TO_CHAR(hire_date,'fmYYYY_MM_DD')
                    YYYY:年份的数字全称,YEAR:年份的英文全称,MM:月份的两位数字表示,MONTH:月份的英文全称
                    MON:月份的三位英文表示,DY:星期的三位英文表示,DAY:星期的全英文表示,DD:一个月中某一天的数字表示
                    HH24:MI:SS AM ----15:45:32 PM, DD "of" MONTH --- 12 of OCTOBER
                 数字转换成字符串型:TO_CHAR(number,'format_model')
                   format_model: 9表示数字0-9,0表示强制显示一个数字0,$表示在前面加个$,.表示打一个点,,表示三位一个
                                 如TO_CHAR(salary,'$99,999.00')
                   
      TO_NUMBER('-$12,345.67','$99,999.99')=-12345.67:将一个字符串型数字转换为数值型。
      TO_DATE('July 4,2007','Month DD,YYYY')=04-JUL-07:
     
 
 (5)数学函数
      ABS(column_name):返回给定数字的绝对值;
      CEIL(column_name):返回与给定参数相等或比给定参数大的最小整数;
      FLOOR(column_name):返回与给定参数相等或比给定参数小的最大整数;
      COS,SIN,TAN,COSH,SINH,TANH:返回给定参数的三角函数值或反三角函数值,默认的参数认定为弧度制;
      EXP(column_name):返回给定的参数为指数,以e 为底数的幂值。
      LN和LOG:这是两个对数函数,其中LN返回给定参数的自然对数;
      MOD(A,B):返回A与B相除后的余数;
      POWER(A,B):返回某一个数对另一个数的幂,在使用幂函数时,第一个参数为底数,第二个为指数;
      SIGH(A):如果A的值为负数,那么SIGN返回-1,如果A的值为正数,那么SIGN返回1,如果A=0,那么SIGN也返回0;
      SORT(A):返回参数的平方根,由于负数是不能开平方的,所以我们不能将该函数应用于负数
  
      
 (6)其它函数
      CREATEST():该函数返回几个表达式中最大的;
      LEAST():该函数返回几个表达式中最小的;
      USER():该函数返回当前使用数据库的用户的名字;
     
      NVL(exp1,exp2):如果第一个参数不是NULL,返回第一个参数,如果第一个参数为NULL,返回第二个参数
      如:SELECT last_name,salary,NVL(commission_pct,0),(salary*12)+(salary*12*NVL(commission_pct,0)) AN_SAL
          FROM employees;
      NVL2(exp1,exp2,exp3):如果第一个参数不是NULL,返回第二个参数,如果第一个参数是NULL,返回第三个参数。
      NULLIF(exp1,exp2):如果两个参数相等,返回NULL,如果不等,返回第一个参数;
      COALESCE(exp1,exp2,...expn):从前往后数,返回第一个不为NULL的参数
     
      CASE expresion WHEN comparision_expr1 THEN return_expr1
                     [WHEN comparision_expr1 THEN return_expr2
                      WHEN comparision_expr1 THEN return_exprn
                      ELSE else_expr]
       END
      
      
      DECODE(col|expression,search1,result1
                            [,search2,result2,...]
                            [,default]):功能和CASE类似

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22012035/viewspace-694127/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: SQL组函数
请登录后发表评论 登录
全部评论

注册时间:2011-04-17

  • 博文量
    20
  • 访问量
    28620