oracle sql function

1. character function

  • lower
  • upper
  • initcap
  • concat
  • substr
  • length
  • instr
  • lpad|rpad
  • trim
  • replace

example:

image

lpad是填充字符到多少位。

使用了这些函数,就不用像abap一样必须到内表中再去做些处理

 

2. number function

image

除了加减乘除还有以上3个,都很好理解。不过小数点不仅能求右边的也可以求左边的。

如:select round(45.926,-1) from dual;

结果是50,因为-1代表小数点左边的。5四舍五入后就变成10.

所以

select round(45.926,-2) from dual;

结果是0,因为4,四舍五入变为0.如果是55的话就是100。

 

SQL> c /-1/-2
  1* select round(45.926,-2) from dual
SQL> run
  1* select round(45.926,-2) from dual

ROUND(45.926,-2)
----------------
               0

3. date function

date function其实可以和number function连用,下图为示例:

image

 

image

这是用上了number function

暴风截屏20080927210457

4. conversion functions

implicit data type conversion

explicit data type conversion

 

select to_char(qty,’$999.99’) from sales;

 

5. general function 通用函数

NVL(exp1,exp2):converts a null to an actual value。

example:

有一个用处是统计平均值

select bzirk,avg(nvl(zzfkimg,0)) from s901
where sptag = '20041010'
group by bzirk;

如果zzfkimg有null值的话,avg会忽略掉那么平均值会变大。

 

NVL2(exp1,exp2,exp3):如果exp1不为空,使用exp2否则使用exp3.

example:

select nvl2(voref, 'hhhh','fffff') from vbap
where vbeln = '0000000001';

注意这里的null并不等同于空字符串。通过se11看表是空值单这里并不是现实fffff

 

NULLIF (expr1, expr2) :相等返回NULL,不等返回expr1

 

COALESCE (expression_1, expression_2, ...,expression_n)

列表中第一个非空的表达式是函数的返回值,如果所有的表达式都是空值,最终将返回一个空值。

select last_name,

         coalesce(pct, last_name, 10)

from exp;

如果pct和last_name都为空则显示10,否则显示pct或者last_name。

 

6. CASE, DECODE 不同条件的判断

case其实就是一个if else的判断。

example:

SELECT AVG(CASE WHEN e.salary > 2000 THEN e.salary
ELSE 2000 END) "Average Salary" FROM employees e;
Average Salary
--------------
6461.68224

 

SELECT cust_last_name,
CASE credit_limit WHEN 100 THEN 'Low'
WHEN 5000 THEN 'High'
ELSE 'Medium' END AS credit
FROM customers
ORDER BY cust_last_name, credit;
CUST_LAST_NAME CREDIT
-------------------- ------
Adjani Medium
Adjani Medium
Alexander Medium
Alexander Medium
Altman High
Altman Medium

不过对于webi中,只需要自定义一个variable即可,不需要自定义sql来做。

 

decode类似于case语句,估计用的也不多,用时可以查sql reference。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值