Oracle的相关函数

        Oracle:字符串函数,空值操作,日期函数

字符串操作函数:
1  concat(p1,p2)--字符串连接函数
2  length(p1):求长度
3 lpad(p1,n,p2):从左边填充,即p1字符串,在n个长度中右对齐,剩下的长度用p2填充 lpad('aaa',5,*)--->**aaa
4  rpad(p1,n,p2):同上
5  lower(),upper():大小写
6  initcap():将每个单词的第一个字母大写,initcap("hello world"), Hello World
7  trim(p2 from p1):移除字符串两侧的空白字符
8  ltrim(p1,p2):移除字符串左侧的空白字符
9  rtrim(p1,p2):移除字符串右侧的空白字符
10 substr(p1,n,[length]):n为负表示从右向左截取n个字符,为正:从左向右 0-length-1
11  substr(p1,n1,length):n1:规定从何处开始截取length长度的字符
=============================================
12instr(p1,p2,[,m],n):从p1 m位置开始检索,p2出现第n次的位置
  作用是返回p2子串在p1中出现的位置。
  m:表示从p1的第m个字符开始往检索。
  n:表示p2第n次出现。
  instr(p1,p2):返回p2子串在p1中第一次出现的下标
  instr(p1,p2,m):返回从p1的m位置开始,p2第一次出现的位置。
  instr(p1,p2,m,n):返回从p1的m位置开始,p2第n次出现的位置。
  注意:没有子串,返回0

数值函数的学习:

1   number(p,s):p总长,小数点后s位,p的取值范围在1-38;
   p:有效长度。
   s:小数点后最多的位置。
   p-s:整数位的最大值
   number(p):相当于s为0。p的取值范围在1-38;
   也可以不指定p,
   number(*,s):p的位置,范围在1-38;
2   为了考虑数据库的移植和兼容问题。oracle提供了其他的数值类型
   numeric(p,s)相当于number(p,s)
   decimal(p,s)/dec(p,s)相当于number(p,s)
   integer/int相当于number(38)
   smallint相当于number(38)
   float相当于number
   double precision 相当于number
   real 相当于number
   

  几种函数:::::

   函数1:四舍五入函数
      round(p,n):
      对p进行四舍五入,保留小数点后n位。
      n可以不写,相当于n为0。取整。
      n可以为负数,保留到小数点前n位。
   函数2: 截取函数 
      trunc(p,n):
      对p进行截取操作,保留小数点后n位。
      n可以不写,相当于n为0。只截取整数
      n可以为负数,截取到小数点前n位。
   函数3:取余函数
      mod(m,n):
       表示m对n做取余操作。
   函数4:向上取整/向下取整函数
     ceil(m)/floor(m)
     ceil(m):表示取大于等于m的最小整数
     floor(m):表示取小于等于m的最大整数。

日期操作函数:

   date:日期类型,默认格式'yy-mon-rr',占七个字节大小
   第一个字节:表示世纪  +100
   第二个字节:年
   第三个字节:月
   第四个字节:日
   第五个字节:时
   第六个字节:分
   第七个字节:秒
   timestamp:时间戳类型,最长占11个字节大小
   前七个字节与date一致。后四个字节存储的是精确度,可以精确到纳秒
  关键字:
     sysdate:返回的是当前系统时间。精确到日,格式:15-3月-18
     systimestamp:返回的是当前系统时间,精确到纳秒,格式:15-3月 -18 10.05.45.788000000 上午 +08:00
     select systimestamp from emp 

   格式:
      YYYY:表示年
      MM:月
      DD:日
      HH24:24小时制的时
      HH/hh12:12小时制
      MI:分
      SS:秒
      AM:表示上下午
      DAY/DY:表示星期几
      D:表示一周的第几天
      DDD:表示一年的第几天
 
   函数1:        
     to_char(p1,fmt) 通常都是在查询语句中使用
      作用将p1按照格式fmt进行显示。
     p1:日期类型
     fmt:字符串,格式
   函数2:
      to_date(p1,fmt),通常都是在插入中使用
      作用将p1按照格式fmt变成日期类型
      p1:字符串类型
      fmt:字符串,格式
   函数3:
      last_day(p1):
       查看p1日期所在月的最后一天的日期
   函数4:
      add_months(p1,n):
      表示查看p1日期的n个月后的日期。
      n:表示增加的月数。
      n:可以为小数,但是会截取成整数进行增加。
      n:可以为负数,表示p1的前几个月。
   函数:
      months_between(p1,p2)   
      计算p1日期和p2日期之间相差的月数。
      可能为小数。
      计算规则:p1-p2,
      可能为负数。

日期函数--续

  1:next_day(date,num)
    表示查看参数date的下一个周几的日期
    date:某一日期
    num:范围为1-7,表示周日到周六
  2:least(p1,p2,p3,...)
     多个参数比较,显示最小的数据
     greatest(p1,p2,p3,………………)
     多个参数比较,显示最大的数据
     要求:参数为同一类型
           或者可以默认转换成第一个参数的类型。
           参数类型基于第一个参数类型,以第一个参数的类型为基准  
     字符串类型比较大小:比较的字符的ascii码的大小。
   3:extract( p1 from p2):
    表示从日期p2中提取分量p1
    日期的分量:
                year
                month
                day
                hour
                minute
                second  
    日期类型关键字sysdate和systimestamp,表示当前系统时间
    可以从sysdate中提取年月日
    可以从systimestamp中提取年月日时分秒

空值操作:

    null:表示空的意思。
    1:表中的任何字段,默认情况下都可以为null值。
    2:not null表示 非空,是一种约束,
      设置为非空约束的字段,必须有有效值,不能为空
    3:插入数据时,
      reg:
         insert into emp (empno,ename) values(2001,'张三');
          此记录中,没有赋值的字段都是null值。
      reg:
         insert into emp (empno,ename) values(2002,null);
         此记录中,字段ename为null值。
    4:修改数据时,
       (1)当空值为条件时
         update emp set ename='张三' where comm is null;
       (2)当被设置为null时,
         update emp set ename = null;
    5:当空值参与计算时。
      null:相当于无穷大
        1+null为null
        null也不等于null
      reg:计算员工的月收入
      select sal+comm from emp; 明显结果有问题。
空值操作函数:
      (1)nvl(p1,p2)
        表示:如果p1这个字段的值为null,就使用p2
             否则使用本身p1
      (2)nvl2(p1,p2,p3)
        表示:如果p1是null,就使用p2,
             如果是null,使用p3

  基础查询语句:DQL  query(查询的意思)

    select colName1,………… from tname;
    1:select子句:查询语句中必不可少的一部分
      select 后可以指定要显示的字段名
      可以使用通配符* 来代替表中的所有字段名。
      字段名 后 可以起 列别名
      as可以忽略。      
    2:from子句:查询语句中必不可少的一部分
      from 用来指定要操作的表对象
      表名也可以起别名,直接在表名后 添加别名。
      不能使用as
    3:where子句:
      用来使用限制条件进行查询的。
      查询出符合限制条件的记录。
      符号:
        =,>,<,>=,<=,!=  
    注意:  多个条件时使用and或者or进行连接。
      当条件在某一个区间内或不在某一区间内时,
      可以使用
       [not] between p1 and p2 
      当条件为某些固定值时,可以使用集合。
      in/not in
      用法:
          字段名  in (值1,值2,…………);
          表示符合集合中的任意一个即可。
          相当于or 
          字段名 not  in (值1,值2,…………);
          表示不符合集合的任何一个。
          相当于and
        


 
 

猜你喜欢

转载自blog.csdn.net/xiaozelulu/article/details/80238054