oracle 默认escape_Oracle 一些函数的使用

nvl 函数

通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值

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

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

ESCAPE

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

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

SQL>select*fromtestwheretestlike'sddd_%'escape'd';

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

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

连接字符串 concat ||

--concat只能连接两个字符串,连接多个需要嵌套调用不方便

SQL>selectconcat('aa','bb')fromdual;

CONCAT('AA','BB')-----------------

aabb--||直接连接多个字符串

SQL>select'aa'||'bb'||'cc'fromdual;'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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值