oracle函数结构,ORACLE常用结构和函数使用方法总结

Normal

0

false

false

false

EN-US

ZH-CN

X-NONE【IT168技术】在学习oracle的过程中,遇到一些常用的函数或结构,下面做一个简单的总结。

With用法:

The WITH query_name clause lets you

assign a name to a subquery block. You can then reference the subquery block

multiple places in the query by specifying the query name. Oracle optimizes the

query by treating the query name as either an inline view or as a temporary

table.

WITHAS

(subquery_sql_statement),

AS(sql_statement_from_alias_one)SELECT FROM ,WHERE;

例子:

with

sql1as(select to_char(a) s_name fromtest_tempa),

sql2as(select to_char(b) s_name fromtest_tempbwherenot exists( selects_namefrom sql1 whererownum=1))

select* fromsql1

unionallselect *fromsql2

Decode用法:

Decode函数与一系列嵌套的IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和第i个compare项匹配,就返回第i个对应的value。如果base_exp与任何的compare值都不匹配,则返回default;

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值

例子:

SELECTDECODE(Status,0,'未预定'1,'已预定',2,'已入库')  ASstatus

FROM

Stocks

//分析:

当Status=0时,将"未预定"赋值

当Status=1时,将"已预定"赋值

当Status=2时,将"已入库"赋值

NVL()函数:

NVL(ARG,VALUE)达标如果前面的ARG值为NULL那么返回的值为后面的VALUE

NVL(eExpression1,

eExpression2)

eExpression1和eExpression2可以是任意一种数据类型;

DECODE与NVL结合使用:

DECODE(NVL(ChangeNum,''),'','-',ChangeNum)

//分析:

首先判断ChangeNum是否为空.若为空赋空值[NVL函数]

其次,判断取出的字段是否为空,如果是则赋'-'

最后的默认处理是ChangeNum。

LPAD和RPAD的用法:

lpad( string1,

padded_length,[pad_string ])

其中string1是需要粘贴字符的字符串

padded_length是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成padded_length;pad_string是个可选参数,如果这个参数未写,lpad函数将会在string1的左边粘贴空格。

selectlpad('tech',2)fromdual

返回值:t

eselect lpad('tech',8,'0') fromdual

返回值:0000tech

TRUNC用法:

TRUNC(fordates)

TRUNC函数为指定元素而截去的日期值。

其具体的语法格式:TRUNC(date[,fmt])

date一个日期值

fmt日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去

TRUNC(TO_DATE(’24-Nov-199908:00pm’,’dd-mon-yyyy hh:mi am’))

=’24-Nov-199912:00:00am’

TRUNC(TO_DATE(’24-Nov-199908:37pm’,’dd-mon-yyyy hh:mi am’,’hh’))

=’24-Nov-199908:00:00am’

另一种用法

TRUNC(fornumber)

TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。

其具体的语法格式:TRUNC(number[,decimals])

number待做截取处理的数值

decimals指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分

TRUNC(89.985,2)=89.98

TRUNC(89.985)=89

TRUNC(89.985,-1)=80

注:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值