oracle02

来源:互联网 发布:深圳华夏软件职业教育 编辑:程序博客网 时间:2024/06/04 19:39

函数
  函数只有一个输出
 
lower:转为小写
 
 SQL> select lower ('sql:Structural Query Language') from dual;

 LOWER('SQL:STRUCTURALQUERYLAN
 -----------------------------
 sql:structural query language

这里的dual是系统里的一个虚表


upper:转换为大写
initcap:变成首字母大写
concat:连接两个字符串
    select concat(‘----’,‘二二二’) from dual;
substr:返回指定的子串
   select substr('sql is structural query language',m,n)from dual;
  返回第m个字符开始长度为n的串,可省略n。
length:返回字符串的长度
instr:返回所给字符的位置SELEVT
   select instr('sql is structural query language','i') from dual;
   ----------------------------
                             5
trim:去掉头尾的字符。
   SQL> select trim('?' from '?sql is xxx?') from dual;

 TRIM('?'FR
 ----------
 sql is xxx
默认去掉头部+尾部的字符。
如果要分别去掉头或尾,用leading 或 trailing
 SQL> select trim(leading'?' from '?sql is xxx?') from dual;

 TRIM('?'FR
 ----------
 sql is xxx?

------------------------------------------------------------------------
使用字符函数的实例:

 select empno as "Code" , upper(ename)NAME, initcap(job)"Job" from emp where lower(job)='salesman'

单引号和双引号的区别:
   双引号括起来的更确切一点叫 "引证标识符"
        比如我们创建一张表,我们在写CREATE语句的时候,就算表名用小写,数据字典里存储的所有标识符还是大写的
        但是要想在数据字典里存储小写的标识符,那写CREATE语句的时候就得用双引号
       所以要标识符区分大小写,或在标识符中包含空格,或者使用保留字做标识符,就得用双引号括起来的引证标识符

 双引号:
              ① 表示其内部的字符串严格区分大小写
              ② 用于特殊字符或关键字
              ③ 不受标识符规则限制
              ④ 会被当成一个列来处理
              ⑤ 当出现在to_char的格式字符串中时,双引号有特殊的作用,就是将非法的格式符包装起来
 

单引号:
              ① 表示字符串常量
              ② 字符串中的双引号仅仅被当作一个普通字符进行处理。此时,双引号不需要成对出现

       ③ 动态SQL:
                 在一对单引号包含的语句中,必须有一对相邻的单引号表示一个单引号
                 两个相邻的单引号的作用,第一个是用来表示转义字符,后面一个表示真正的单引号
                 单引号里要用单引号应该是两个连续的单引号,而不是双引号
                 例如:
select 'alter system kill session ''''|| sid||','||serial#|| '''';' from v$session


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
数字型函数
  round(列名|表达式,n):四舍五入到小数点后n位
  trunc(列名|表达式,n):把数值截取到小数点后n位
  mod(m,n):m除以n并取余数
 
   SQL> select round(1.253,2),trunc(23.264652,3),mod(9,5) from dual;

  ROUND(1.253,2) TRUNC(23.264652,3)   MOD(9,5)
  -------------- ------------------ ----------
            1.25             23.264          4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
日期处理:
   默认格式: DD-MON-RR


SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
--------------
10-5月 -15

 日期相加减,结果还是日期类型。
 
 SQL> select sysdate -1 from dual;

 SYSDATE-1
 --------------
 09-5月 -15
默认加减的为天数  , 除以24 可变成小时数。xx/24

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
日期函数
  months_between(日期1,日期2):返回日期间隔的月数,日期1大于日期2,为正数,反之为负数。
 select months_between('01-3月-15','01-5月-15') from dual
 

 MONTHS_BETWEEN('01-3月-15','01-5月-15')
 ---------------------------------------
                                      -2
 
  add_months(日期,n月):把n月加到日期上
  next_day(日期,字符串):返回下一个由字符串(星期几)指定的日期。
    表示的是:15年5月10号开始,下一个星期日的日期。
 SQL> select next_day('10-5月-15','星期日')from dual;

 NEXT_DAY('10-5
 --------------
 17-5月 -15

  last_day(日期):返回该日期所在的月份的最后一天
 
-----------------------------------------------------------------------------
  综合的例子:
 
   select
   ename,hiredate,last_day(hiredate),
   next_day(hiredate,'星期日'),
   months_between(sysdate,hiredate)"Months",
   add_months(hiredate,3)"Revview"
   from emp
 
 

ENAME      HIREDATE       LAST_DAY(HIRED NEXT_DAY(HIRED     Months Revview
---------- -------------- -------------- -------------- ---------- --------------
SMITH      17-12月-80     31-12月-80     21-12月-80     412.789808 17-3月 -81
ALLEN      20-2月 -81     28-2月 -81     22-2月 -81     410.693034 20-5月 -81


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

 

0 0
原创粉丝点击