#####################################
# 常用的字符和字符串处理类函数
#####################################

# LOWER函数
作用:将字符串转换成为小写字母
示例:
    select firstname,lastname from customers
    where LOWER(lastname) = 'nelson';
# UPPER函数
作用:将字符串转换成为大写字母
示例:
    select firstname,lastname from customers
    where UPPER(lastname) = 'nelson';

# INITCAP函数
作用:将字符串转换成为混合大小写,每一个单词的开始都是一个大写字母,
         其余字符转换成为小写字母。
示例:
    select firstname,lastname from customers
    where UPPER(lastname) = 'nelson';

select initcap(firstname),initcap(lastname) from customers;

# SUBSTR函数
作用:取子串函数
格式:SUBSTR(C,P,L)      其中:C表示字符串,P表示要提取的起始的字符串的位置,
           L表示提取的长度。如果P为负值,表示从字符串的
           最后一位倒着向前取。
示例:
    select distinct substr(zip,1,3)
    from customers;
  
    select distinct substr(zip,1,3),substr(zip,-3,2)
    from customers;

# LENGTH函数
作用:确定要分析的字符串的长度
示例:
    select destinct length(address)
    from customers;

# LPAD函数
作用:用于字符串填充。填充的是字符串左侧的区域。
格式:LPAD(C,L,S)         其中:C表示将要填充的字符串,L表示填充“之后”字符串
            的长度,S表示用于填充的符号或者字符
示例:
    select firstname,LPAD(firstname,12,' ')
    from customers
    where firstname like '%E%';

# RPAD函数
作用:用于字符串填充。填充的是字符串右侧的区域。
格式:RPAD(C,L,S)         其中:C表示将要填充的字符串,L表示填充“之后”字符串
            的长度,S表示用于填充的符号或者字符
示例:
    select firstname,RPAD(firstname,12,' ')
    from customers
    where firstname like '%E%';

# LTRIM函数

# RTRIM函数

# REPLACE函数
作用:用于字符串的替换
格式:REPLACE(C,S,R) 其中:C表示将处理的字符串,S表示想要查找的字符串,R表示
            将要替换的字符串。类似于“查找与替换”功能。
示例:

# CONCAT函数
作用:字符串连接函数    ||

####################################################################
# 数字函数
####################################################################

# ROUND函数
作用:用来将数字字段舍入的指定的精度。
格式:ROUND(N,P)
示例:
    select title,retail,ROUND(RETAIL,1),TRUNC(RETAIL,1)
    from books;

# TRUNC函数
作用:用来将数字字段截断的指定的精度。
格式:ROUND(N,P)
示例:
    select title,retail,ROUND(RETAIL,1),TRUNC(RETAIL,1)
    from books;

####################################################################
# 日期函数
####################################################################

# Oracle的日期函数以DD-MON-YY格式显示日期值,这种格式表示两位的天数,三位的月份简写
    以及两位的年份。
    例如:20-MAR-02
  
# MONTHS_BETWEEN函数
作用:表示两个月之间相差的天数
示例:
    select title,MONTHS_BETWEEN(orderdate,pubdate)
    from books NATURAL JOIN orders NATURAL JOIN orderitems
    where order# = 1009;

# ADD_MONTHS函数
     作用:表示在某个日期之后的时间
示例:
    select title,pubdate,ADD_MONTHS(pubdate,60) "Drop Date"
    from books
    order by "Drop Date";

# NEXT_DAY函数
作用:
格式:    NEXT_DAY(d,DAY)    其中:d表示开始日期,DAY表示将要确定的一周中的某一天
示例:
    select order#,orderdate,NEXT_DAY(orderdate,7)
    from orders
    where order# = 1010;

# TO_DATE函数
作用:
示例:
    select order#,orderdate,shipdate
    from orders
    where orderdate = to_date('3-31-2003','MM-DD-YYYY');

##### 日期格式元素的值

MONTH    全部写出的月份名称,添加空格,达到9个字符的总宽度 APRIL
    MON    月份名称的三个字母简写       APR
    MM    月份的两位数字值       04
    RM    罗马数字的月份        IV
    D               一周中某一天的数值
    DD     一月中某一天的数值
    DDD             一年中某一天的数值
    DAY             一周中某一天的名称,添加空格,达到9个字符的宽度    Wednesday
    DY    一周中某一天的三个字母简写      WED
    YYYY    显示4位的年份
    YYY、YY、Y      显示年份的最后三位、最后两位或者最后一位
    YEAR            全部写出年份
    B.C. 或者 A.D.

####################################################################
# NVL函数
####################################################################
作用: 可以使用NVL函数来解决对可能包含NULL值的字段执行数学运算时导致的问题。
    在Oracle9i中,NULL值不等于空格或者0。在计算中使用NULL值时,结果是NULL值。
    NVL函数使用一个值来代替现有的NULL值。

select order#,orderdate,shipdate,shipdate-orderdate "Delay"
    from orders;
    在执行上述查询时,有一些列是空白的。请注意!

select order#,orderdate,NVL(shipdate,to_date('07-4-03','DD-MM-YY')),
    NVL(shipdate,to_date('07-4-03','DD-MM-YY'))-orderdate "Delay"
    from orders
    where order# = 1018;

如果shipdate列的值为NULL,就用'07-04-03'替换shipdate的值。

####################################################################
# NVL2函数
####################################################################

作用: NVL2函数是NVL函数的一个变化形式,他允许不同的选项,这取决于是否存在NULL值。
格式: NVL2(x,y,z),其中y表示当x不是NULL时所替换的数据,z表示当x是NULL时所替换的数
    据。这使用户在处理NULL值时更加灵活。

例如:NVL2(commission,salary,salary+commission)
    表示:如果佣金是NULL,那么工资总额就是工资;如果佣金不是NULL,那么就将工资总额计算为工资加佣金。

select order#,orderdate,NVL2(shipdate,'Shipped','NOT SHIPPED') "Status"
    from orders;

####################################################################
# TO_CHAR函数
####################################################################
作用: 用于将日期和数字转换为格式化的字符串。
格式:

select title,to_char(pubdate,'MONTH    DD ,YYYY') "Publication Date",
    to_char(retail,'$9999.99') "Retail Price"
    from books
    where isbn = 0401140733;

####################################################################
# DECODE函数
####################################################################
作用:
格式:

DECODE是Oracle公司独家提供的功能,它是一个功能很强的函数。它虽然不是SQL的标准,
但对于性能非常有用。到目前,其他的数据库供应商还不能提供类似DECODE的功能,甚至有的
数据库的供应商批评Oracle的SQL不标准。实际上,这种批评有些片面或不够水平。就象有些马    车制造商抱怨亨利。福特的“马车”不标准一样。
在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这 样的逻辑处理过程。它的语法如下:

DECODE(value, if1, then1,    if2,then2, if3,then3,    . . .    else )

Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试    ,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是    then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,    Decode 结果就返回else 。
需要注意的是,这里的if、then及else 都可以是函数或计算表达式。

DECODE实现表的转置

例子:希望将下面的列结果按照列的方式来显示JOB内容:

SQL> select empno,ename,job,sal,deptno from emp
    2    order by deptno,job;

EMPNO ENAME        JOB                SAL       DEPTNO
---------- ---------- --------- ---------- ----------
        7934 MILLER       CLERK             1300           10
        7782 CLARK        MANAGER           2450           10
        7839 KING         PRESIDENT         5000           10
        7788 SCOTT        ANALYST           3000           20
        7369 SMITH        CLERK              800           20
        7876 ADAMS        CLERK             1100           20
        7566 JONES        MANAGER           2975           20
        7938 赵元杰       软件             12345           20
        7698 BLAKE        MANAGER           2850           30
        7499 ALLEN        SALESMAN          1600           30
        7654 MARTIN       SALESMAN          1250           30
        7844 TURNER       SALESMAN          1500           30
        7521 WARD         SALESMAN          1250           30

18 rows selected.

再看下面的查询结果:

SQL> select deptno,job,sum(sal) from emp group by deptno,job;

DEPTNO JOB           SUM(SAL)
---------- --------- ----------
          10 CLERK             1300
          10 MANAGER           2450
          10 PRESIDENT         5000
          20 ANALYST           3000
          20 CLERK             1900
          20 MANAGER           2975
          20 软件             74070
          30 MANAGER           2850
          30 SALESMAN          5600

9 rows selected.

从上面的结果看,如果希望将JOB置换成列的方式,则只要用DECODE将JOB列进行描述即可。创建的视图如下:

create or replace view empv as
select deptno,
sum( decode(job,'ANALYST', sal,0)) ANALYST,
sum( decode(job,'CLERK', sal,0)) CLERK,
sum( decode(job,'MANAGER', sal,0)) MANAGER,
sum( decode(job,'PRESIDENT', sal,0)) PRESIDENT,
sum( decode(job,'SALESMAN', sal,0)) SALESMAN,
sum( decode(job,'软件', sal,0)) 软件
from emp    group by deptno;

具体运行的显示样本如下:
SQL> create or replace view empv as
    2    select deptno,
    3    sum( decode(job,'ANALYST', sal,0)) ANALYST,
    4    sum( decode(job,'CLERK', sal,0)) CLERK,
    5    sum( decode(job,'MANAGER', sal,0)) MANAGER,
    6    sum( decode(job,'PRESIDENT', sal,0)) PRESIDENT,
    7    sum( decode(job,'SALESMAN', sal,0)) SALESMAN,
    8    sum( decode(job,'软件', sal,0)) 软件
    9    from emp    group by deptno;

View created.

SQL> select * from empv;

DEPTNO      ANALYST        CLERK      MANAGER    PRESIDENT     SALESMAN         软件
---------- ---------- ---------- ---------- ---------- ---------- ----------
          10            0         1300         2450         5000            0            0
          20         3000         1900         2975            0            0        74070
          30            0            0         2850            0         5600            0

####################################################################
# SOUNDEX函数
####################################################################

####################################################################
# NESTING函数
####################################################################

####################################################################
# DUAL表
####################################################################

####################################################################
# SUM函数
####################################################################

select sum(retail-cost) "Total Profit"
from orderitems NATURAL JOIN books
where order# = 1007;

####################################################################
# AVG函数
####################################################################

select avg(retail-cost) "Average Profit"
from books
where category = 'COMPUTER';

select to_char(avg(retail-cost),'999.99') "Average Profit"
from books
where category = 'COMPUTER';

####################################################################
# COUNT函数
####################################################################

select count(distinct category) from books;

select distinct count(category) from books;

select count(*) from orders
where shipdate is null;

select count(shipdate) from orders
where shipdate is null;

在COUNT函数中提供的参数是一个*时,存在的所有记录都会计算在内,通过计算整个记录, Count函数不会丢掉NULL值。

####################################################################
# MAX函数
####################################################################

####################################################################
# MIN函数
####################################################################

####################################################################
# GROUP BY子句
####################################################################

select category,to_char(avg(retail-cost),'999.99') Profit
from books
group by category

select customer#,order#,sum(quantity*retail) "Order Total"
from orders NATURAL JOIN orderitems NATURAL JOIN books
group by customer#,order#

####################################################################
# HAVING子句
####################################################################

select category,to_char(avg(retail-cost),'999.99') Profit
from books
group by category
having avg(retail-cost)>15;

select category,to_char(avg(retail-cost),'999.99') Profit
from books
where pubdate>to_date('01-01-02','DD-MM-YY')
group by category
having avg(retail-cost)>15;

按照订单进行分组统计,但是只显示总金额超过100美元的订单。

select customer#,order#,sum(quantity*retail) "Order Total"
from orders NATURAL JOIN orderitems NATURAL JOIN books
group by customer#,order#
having sum(quantity*retail)>100;

####################################################################
# STDDEV函数
####################################################################
作用:
    计算指定字段的标准差。“标准差”计算用来确定一组数字中的单个值与平均值的接近    程度。
示例:
    select category,avg(retail-cost),stddev(retail-cost)
    from books
    group by category;

要想解释标准差计算的数值,必须将它与每一个种类的“平均利润”作比较。例如:查     看上述结果中Cooking种类,图书的平均利润是8.60美元。但是大多数图书都接近这个    平均值,还是大多数图书都之产生1美元的利润,而一本书产生了20美元的利润?
    标准差就是有多少本书位于平均值附近的某个范围之内的统计近似值。

####################################################################
# VARIANCE函数
####################################################################

作用: 用来确定数据在一个组中的分散程度。一组记录的方差是根据指定字段的最大值
    和最小值计算的。
    如果数据值很密集,那么方差就很小;但是如果数据包含极端的值(很大或者很小)
    那么方差就很大。
示例:
    select category,variance(retail-cost),min(retail-cost),max(retail-cost)
    from books
    group by category;

对结果的解释:
    上述查询结果列出了BOOKS表中所有图书的种类、每一个种类的利润方差以及每个种类
    中的最小利润和最大利润(为了进行比较)。与标准差一样,如果一组数据只包含一个      值,那么计算得到的方差是0。但是与标准差不同,方差不是用与源数据相同的单位计    算的。

要想解释VARRANCE函数的结果,必须查看这个值有多大或者多小。例如:Cooking种类    具有比其他种类更小的方差。这意味着Cooking种类中的图书利润更密集(也就是说,    利润没有覆盖更大的范围)。
                  看一下Cooking种类中的图书的最小利润和最大利润,注意,利润范围是2.30美元,
    (9.75.7.45)。另一方面,我们看看Family Life种类。这个种类具有最高方差,如果    比较最小利润和最大利润,那么他的利润范围很大。
    这就警告管理人员,一些书可能产生很小的利润。而其他一些可以产生很大的利润,可    以知道企业的经营数据。

转载于:https://www.cnblogs.com/zhahost/archive/2008/12/02/1346171.html

oracle常用的字符和字符串处理类函数相关推荐

  1. oracle关于字符串函数,Oracle常用函数 - 字符函数

    一.字符本身功能函数 1.lower(str)    小写转换,获取小写字符: 2.upper(str)    大写转换,获取大写字符: 3.length(str)    获取字符长度: 4.conc ...

  2. 常用函数(字符和字符串)

    Pascal常用的字符处理标准函数有5个 (1)ord(ch)           求字符ch对应的ASCII代码值:如 ord ('A')结果为65,ord(true)结果为1,ord(false) ...

  3. Oracle 常用的字符型函数

    1.连接两字符串函数:concat(s1,s2) 和 s1 || s2 效果一样. 示例: 2.把每个单词首字母变大写,其他字母小写:initcap() 示例: 3. 把字符串全部转为大写:upper ...

  4. oracle按特定字符截取字符串_妙用字符串的替换和截取让Shell脚本精准得到你心中的那个“她”...

    目的 shell脚本中各种条件的判断,都需要对判定条件精准把控,而字符串在脚本中用的是最多的,怎样准确的获取你想要的字符串至关重要.本文详细介绍了shell脚本中妙用字符串的替换和截取,让你精准获得你 ...

  5. oracle中常用关键字,oracle常用函数及关键字笔记

    --函数及关键字-- 1.trim,ltrim,rtrim 去除字符,无指定默认去除空格 SELECT TRIM('a' FROM 'aafhfhaaaaaaaa'), LTRIM('aafhfhaa ...

  6. oracle常用的字符串函数,Oracle的常用字符函数实验展示

    Oracle提供了众多实用的字符函数,在众多的字符函数中常用的并不多,精通常用的几个字符函数便可游刃有余. 通过这个小文儿简单演示一下常用字符函数的用法,供参考. 1.实验预备动作 1)创建实验表T ...

  7. oracle导入提示字符过长,Oracle 解决【ORA-01704:字符串文字太长】

    错误提示:oracle在toad中执行一段sql语句时,出现错误'ORA-01704:字符串文字太长'.如下图: 原因:一般为包含有对CLOB字段的数据操作.如果CLOB字段的内容非常大的时候,会导致 ...

  8. Oracle 常用字符函数

    Oracle 常用字符函数 1 LOWER(char):字符串全部转化为小写格式 2 UPPER(char):字符串全部转化为大写格式 3 INITCAP('char'):每个单词首字母大写,其余小写 ...

  9. oracle clob 存储大于4000字符的字符串

    2019独角兽企业重金招聘Python工程师标准>>> 当通过insert语句直接插入一段文本或者html字符串试,超过4000字符时候,就会报: ORA-01489: 字符串连接的 ...

最新文章

  1. 我酸了!又是别人家公司!百度新年发 U 奖金鼓励员工
  2. arttemplate 不转义html,使用artTemplate模板引擎渲染错误
  3. 拒绝无用的长篇大论!仅12张图片,最全的中台精华都在这里了
  4. Linux系统的目录结构 及各目录用途详解
  5. 洛谷——P1151 子数整数
  6. 如何禁止用户安装应用程序,记下来,方便以后用
  7. android天气预报开题报告,开题报告-基于Android手机移动天气预报系统.doc
  8. 在linux上将ape转成mp3,以及MP3 大小转换
  9. .Net语言的APP开发平台Smobiler3.2版本将于八月中旬发布!——3.2版本预告(二)
  10. 程序员的未来之路[转]
  11. 拆解易鑫2020:担保服务收入猛增,助贷业务营收占比超三成
  12. 穴位保健:自我按摩赶走亚健康
  13. MGAT: Multimodal Graph Attention Network for Recommendation
  14. ubuntu使用xopen软件
  15. 银行卡被冻结 应该怎么处理?
  16. 文件宝局域网传输/播放功能Windows10系统经验贴(感谢文件宝用户@卡卡罗特 和@24K 純情)...
  17. 儿童滑雪单板双板等级标准
  18. java 压缩图片大小
  19. 阿里云服务器购买和配置全流程
  20. linux 进程状态显示dl,Linux系统中的实时调度器DL调度器的原理是什么?详细概述...

热门文章

  1. boot spring test 文档_SpringBoot入门建站全系列(五)使用Spring-data-jpa操作数据库
  2. std::mutex
  3. python3 用pygame 简单建一个飞船模型
  4. SQL Error: 957, SQLState: 42000 ORA-00957: duplicate column name
  5. 2、Keepalived提供日志与双主模型演示
  6. 通过trace跟踪系统调用
  7. 排序之插入排序:直接插入+希尔排序
  8. Oracle-计算岁数
  9. 使用浏览器cookie
  10. PayPal 开发详解(六):下载paypal立即付款SDK 并编译打包