当前位置:Gxlcms > 数据库问题 > Oracle 一些函数的使用

Oracle 一些函数的使用

时间:2021-07-01 10:21:17 帮助过:9人阅读

 
selectnvl(sum(t.dwxhl),1)fromtb_jhdetwherezydm=-1

  这里关心的nvl的用法,nvl(arg,value)代表如果前面的arg的值为null那么返回的值为后面的value

ESCAPE

escape关键字经常用于使某些特殊字符,如通配符:‘%’,‘——’转义为他们原来的字符的意义,被定义的转义字符通常使用‘\’,但是有时候也可以使用其他符号。

转义字符为d,没有实现转义功能;

SQL>select*fromtestwheretestlikesddd_%escaped;

  查找包含所有‘_‘的字段。

 
SQL>select*fromtestwheretestlike%\_%escape\;

 连接字符串 concat || 

   
--concat只能连接两个字符串,连接多个需要嵌套调用不方便
SQL>selectconcat(aa,bb)fromdual;
 
CONCAT(AA,BB)
-----------------
aabb
--||直接连接多个字符串
SQL>selectaa||bb||ccfromdual;
 
AA||BB||CC
----------------
aabbcc
 

 

 

字符串截取 

    substr(字符串,截取开始位置,截取长度) //返回截取的字 

substr(HelloWorld,0,1)//返回结果为H*从字符串第一个字符开始截取长度为1的字符串

  长度计算函数 length()与lengthb()

SQL>selectlength(新春快乐)fromdual;
LENGTH(新春快乐)
------------------

SQL>selectlengthb(新春快乐)fromdual;
LENGTHB(新春快乐)
-------------------
 
区别:length求得是字符长度,   
 lengthb求得是字节长度。 ?

 INSTR函数

-- 在指定的字符串中检索指定字符所在的索引位置

 
  
SQL>selectinstr(hello,l)fromdual;
INSTR(HELLO,L)
------------------

在hellowolrd中截取出来world字符串?
SQL>selectsubstr(helloworld,instr(helloworld,‘‘))fromdual;
 
SUBSTR
------
world
 
已选择1行。
 
SQL>selectsubstr(helloworld,instr(helloworld,‘‘)+1)fromdual;
 
SUBST
-----
world
 
已选择1行。
 
 
lpad() rpad()

参数1:指定原始的串 参数2:固定长度 参数3:填充的字符 



SQL>selectlpad(‘jack‘,10,‘$‘)fromdual;


LPAD(‘JACK,10,‘$‘)


----------


$$$$$$jack


selectrpad(‘jack‘,10,‘$‘)fromdual;


-----------


jack$$$$$$


 

 

 Next_day

计算出来下一个星期一是几号?

 
selectnext_day(sysdate,星期一)fromdual;

round 四舍五入

NVL (expr1, expr2):

    expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致 
NVL2 (expr1, expr2, expr3) :

    xpr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型 
NULLIF (expr1, expr2):

    相等返回NULL,不等返回expr1

decode()

    主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);

使用方法:

Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

From talbename

Where …

其中columnname为要选择的table中所定义的column,

·含义解释:

decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)的理解如下:

    if==1 then return(1) elsif==2 then return(2) ...... elsif==n then return(n) else return() endif    

注:其中缺省值可以是你要选择的column name 本身,也可以是你想定义的其他值,比如Other等;

表复制快速的建立的表结构?

    create table emp10 as select * from emp where 1=12;

    insert into emp30 select * from emp where deptno=30;

 

Oracle 一些函数的使用

标签:round   ring   convert   com   mp3   world   date   isp   sum   

人气教程排行