zoukankan      html  css  js  c++  java
  • Oracle 常见函数使用汇总


    INSTR
    用法:INSTR(string,subString,position,ocurrence)
    解释:string:源字符串
          subString:要查找的子字符串
          position:查找的开始位置.若起始位置为0,返回值为0,因为下标是从1 开始的,起始位置为0,则表示不查找。既然不查找,就直接返回0,表示找不到了喽;当起始位置为负数的时候,从右边开始查找。
          ocurrence:源字符串中第几次出现的子字符串

      返回找到的位置(字符串下标是从0开始,如果查找到),如果找不到则返回0. 默认查找顺序为从左到右。

    SELECT INSTR('CORPORATE FLOOR', 'OR', 0, 1) FROM DUAL; -- 返回值为0
    
    SELECT INSTR('CORPORATE FLOOR', 'OR', 2, 1) FROM DUAL; -- 返回值为2
    
    SELECT INSTR('CORPORATE FLOOR', 'OR', 3, 1) FROM DUAL; -- 返回值为5
    
    SELECT INSTR('CORPORATE FLOOR', 'OR', 2, 2) FROM DUAL;  --返回值为5
    
    SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) FROM DUAL; --返回值为14
    
    SELECT INSTR('CORPORATE FLOOR', 'OR', -5, 1) FROM DUAL; --返回值为5



    SUBSTR
    用法:SUBSTR(string,start_position,[length] ) 求子字符串,返回字符串
    解释:string 元字符串
           start_position   开始位置(从1开始,如果写0,意义等同于1,即从第一个字符开始如果是负数,则开始位置则从字符串末端开始从右到左数,但根据length截取字符串时,仍然采取从左至右数length个的字符
           length 可选项,子字符串的个数

    SELECT SUBSTR('This is a test', 0, 2) value from dual;  --返回值Th
    SELECT SUBSTR('This is a test', 1, 2) value from dual;  --返回值Th
    SELECT SUBSTR('This is a test', -1, 2) value from dual; --返回值t,因为截取时,仍采取从左至右,因为只有一个字符t,就返回一个t
    
    SELECT SUBSTR('This is a test', -2, 2) value from dual; --返回值st

    NVL用法:NVL(eExpression1, eExpression2)

      从两个表达式返回一个非 null 值。如果eExpression1的计算结果为null值,则 NVL( ) 返回eExpression2。如果eExpression1的计算结果不是null值,则返回eExpression1。eExpression1 和eExpression2可以是任意一种数据类型。如果eExpression1与eExpression2 的结果皆为 null值,则NVL( )返回NULL。

    SELECT nvl('pos1',null) from dual; --返回值为pos1
    
    SELECT nvl(null,'pos2') from dual; --返回值为pos1
    
    SELECT nvl(null,null) from dual;    --返回值为null,即使用 is null进行判断时,会返回true
    
    select sysdate from dual
    where nvl(null,null) is null;--返回2016/5/27 23:58:54

    http://www.cnblogs.com/ningvsban/p/3586218.html

    http://www.cnblogs.com/qqzy168/archive/2013/05/28/3103085.html

    在Oracle中,不等号有三种:<>,!=,^=

      例如:

      select * from test where name<>'xn'。返回的结果是name不为xn,且name不空的记录。但是这与我们想要得到的结果有出入,因为我们的目的是得到name为xn的全部记录,当然这也包括name为空的记录,所以这些写SQL语句是有问题的。为了解决这个问题,我们可以采用以下两种方案:

    select * from test where instr(concat(name,'xx'),'xn') = 0 ;
    
    select * from test where nvl(name,'xx')<>'xn' ;

      备注:null只能通过is null或者is not null来判断,其它操作符与null操作都是false。

      各数据库中的字符串连接方法

      1)MySQL:CONCAT()

      2)Oracle:CONCAT(),||

      3)SQL Server: +

    例如:

    SELECT 'this is '+'a test';                         返回值this a test
    
    SELECT CONCAT('this is ','a test') from dual;   返回值this a test
    
    SELECT 'this is '||'a test' from dual;           返回值this a test

    http://www.cnblogs.com/ningvsban/p/3586223.html

  • 相关阅读:
    软件需求与分析课堂讨论一
    问题账户需求分析
    个人阅读计划
    个人总结
    团队其他各组项目意见
    大白鱼备考云笔记冲刺周期第七天
    大白鱼备考云笔记冲刺周期第六天
    大白鱼备考云笔记冲刺周期第五天
    大白鱼备考云笔记冲刺周期第四天
    大白鱼备考云笔记冲刺周期第三天
  • 原文地址:https://www.cnblogs.com/softidea/p/4697171.html
Copyright © 2011-2022 走看看