欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle中函数的使用

程序员文章站 2024-01-22 15:54:10
1.decode () 例子:它的写法如下decode('a','b','c','d'),其中a,b,c,d可以是其他函数也可以是数值,依据我们自己的情况来使用,它的含义是如果a=b,那么结果显示c,否则d。 翻译成我们更通俗易懂的话就是: if(sex=1) then return '男' els ......

   1.decode ()

   例子:它的写法如下decode('a','b','c','d'),其中a,b,c,d可以是其他函数也可以是数值,依据我们自己的情况来使用,它的含义是如果a=b,那么结果显示c,否则d。

翻译成我们更通俗易懂的话就是:

if(sex=1)

then return '男'

else

return ‘女’

decode(sex,1,'男','女‘’)

  用法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value 等于if1时,DECODE函数的结         果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看           到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。 

 Oracle中函数的使用

该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

2.case ()

用法:case when 'a' then 'b' else 'c' end

例子1:case when sex=1

then '男'

else '女'

end 

例子2:

CASE WHEN sex=1

THEN (case when age>=18

then '成年男人'

else ‘未成年男孩’

end)

ELSE (case when age>=18

then '成年女人'

else '未成年女孩'

3.concat(a,b)

用法:拼接字符串

例子:concat(a,’%’)给a加上%号

连接多个字符串用||

select title,concat(round((retail-cost)/cost*100),'%') from Tbl_Books;

select Category || ' - '  || Title as 图书类别 from tbl_books;

4.round(a,b)截取数字

格式如下:ROUND(number[,decimals])
其中:number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分,并四舍五入。如果为负数则表示从小数点开始左边的位数,相应整数数字用0填充,小数被去掉。对截取的数字要四舍五入。

例子:select title,concat(round((retail-cost)/cost*100),'%') from Tbl_Books;

5.ceil(n)和floor(n)

  ceil(n) 取大于等于数值n的最小整数;

  例子:select title,ceil(cost) from Tbl_Books;

  floor(n)取小于等于数值n的最大整数;

   6.trunc函数处理数字  

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

其具体的语法格式如下

TRUNC(number[,decimals])

其中:

number 待做截取处理的数值

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

例子:select title,cost,retail,trunc(cost),trunc(retail) from Tbl_Books;

7.lpad( string, padded_length, [ pad_string ] )  

  string

  准备被填充的字符串;

  padded_length

  填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad         函数将会把字符串截取成从左到右的n个字符;

  pad_string         

  填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会           在string的左边粘贴空格。

例子:select lpad(Customer_name || '/' || address || '/' || city,80) as 顾客信息 from Tbl_Customer;

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

   例子:select substr(Name,0,4) as 出版社,substr(Contact,0,1) as 姓 from Tbl_Publisher;

  9.replace()

含义为:替换字符串

replace(原字段,“原字段旧内容“,“原字段新内容“,)

select customer_name, replace(city,'上海','ShangHai') as city from Tbl_Customer;

10.NULLIF ( expression1 expression2 )

常量、列名、函数、子查询算术运算符、按位运算符以及字符串运算符的任意组合。

返回类型与第一个 expression1 相同。

输出结果:

如果两个表达式不相等,NULLIF 返回第一个 expression1 的值。

如果两个表达式相等,NULLIF 返回空值NULL。

常量、列名、函数、子查询算术运算符、按位运算符以及字符串运算符的任意组合。

返回类型与第一个 expression1 相同。

输出结果:

如果两个表达式不相等,NULLIF 返回第一个 expression1 的值。

如果两个表达式相等,NULLIF 返回空值NULL。

例子:select Customer_name ,nullif(nullif(City,'北京'),'上海') from tbl_customer;

11.Posstr(a,b)返回b在a中的位置

例子:select posstr(title,'子') from Tbl_Books;