Oracle实战心经

本文详细介绍了Oracle数据库的常用函数,包括字符串处理、数值计算、日期操作等,并探讨了CBO与RBO优化器、PGA与SGA的区别、数据分区策略以及索引设计与优化。此外,还讲解了数据库的系统进程、存储定时器的使用,以及正则表达式在SQL中的应用。通过对这些关键概念的理解和实践,可以帮助提升Oracle数据库管理和性能调优的能力。
摘要由CSDN通过智能技术生成

常用函数:

concat(str1,str2)

例子:字符串拼接函数 
select concat('Hello ','World') from dual;

length(str)

例子:表达式中的字符数
select length('Hello World!') from dual;--返回结果为12

nvl(x,value)

例子:将一个NULL转换为另外一个值,如果x为NULL,则返回value,否则返回x值本身
select nvl(address,'北京市') from student;

nvl2(x,value1,value2)

例子:如果x不为NULL,返回value1,否则,返回value2
select nvl2(address,'有地址','无地址') from student;

replace(x,search_string,replace_string)

例子:从字符串x中搜索search_string字符串,并使用replace_string字符串替换。并不会修改数据库中原始值
select replace('Hello World!','o','HA') from dual;

substr(x,start[,length])

例子:返回字符串中的指定的字符
select substr('Hello World',3) from dual; --返回结果为'llo World'
select substr('Hello World',-3) from dual;--返回结果为'rld'
select substr('Hello World',3,2) from dual;--返回结果为'll'
select substr('Hello World',-7,4) from dual;--返回结果为'o Wo'

abs(value)

例子:绝对值
select abs(-10) from dual;--返回结果为10

floor(value)

例子:返回小于等于value的最大整数
select floor(2.3) from dual; --返回结果为2

trunc(value,n)

例子:对value进行截断,如果n>0,保留n位小数;n<0,则保留-n位整数位;n=0,则去掉小数部分
select trunc(555.666) from dual; --返回结果为555,不加n时默认去掉小数部分
select trunc(555.666,2) from dual;--返回结果为555.66
select trunc(555.666,-2) from dual;--返回结果为500

round(value,n)

例子:对value进行四舍五入,保存小数点右侧的n位。如果n省略的话,相当于n=0的情况
select round(555.666) from dual;--返回结果为556,不加n时默认去掉小数部分
select round(555.666,2) from dual;--返回结果为555.67
select round(555.666,-2) from dual;--返回结果为600

to_char(x[,format])

例子:将x转化为字符串。 format为转换的格式,可以为数字格式或日期格式
select to_char('12345.67') from dual; --返回结果为12345.67
select to_char('12345.67','99,999.99') from dual; --返回结果为12,345.67
SELECT to_char(SYSDATE,'YYYY-MM-DD') FROM DUAL  --2021-03-21
select to_char(sysdate,'Q') from dual;--1  Q为季度
 select to_char(sysdate,'ww') from dual; --ww 当年第几周
 select to_char(sysdate,'w') from dual;--w 本月第几周 
  select to_char(sysdate,'DDD') from dual; --DDD 当年第几天,一月一日为001

to_number(x [, format])

例子:将x转换为数字。可以指定format格式
select to_number('970.13') + 25.5 from dual;  --995.63
select to_number('-$12,345.67', '$99,999.99') from dual;---12345.67

cast(x as type)

例子:将x转换为指定的兼容的数据库类型
select cast(12345.67 as varchar2(10)),cast('05-7月-07' as date), 
cast(12345.678 as number(10,2)) from dual;  --	12345.67	05-7月 -07	12345.68

to_date(x [,format])

例子:将x字符串转换为日期
select to_date('2012-3-15','YYYY-MM-DD') from dual --15-3月 -12

add_months(val1,val2)

例子:当前日期val1后推val2个月
select add_months(sysdate,2) from dual; --21-5月 -21

**

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

IF 条件=1 THEN
    RETURN(翻译值1)
ELSIF 条件=2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF
SELECT decode(6,1,1,3,3,4,4,6) FROM dual --6

sign()

例子:根据某个值是0、正数还是负数,分别返回01-1
select id,sign(id-2) from dual;  -x

lpad()

例子:在字段id前边补字段0 长度为2
select lpad(id,2,0) from t_decode;-x

instr()模糊查询

例子:字符查找函数
like--
select * from tableName a where name like '%helloworld%';
instr--
select * from tableName a where instr(name,'helloworld')>0; 
regexp_like()--查找包含运维或者网络关键字的数据
select *
from B where regexp_like(payment, '(运维|网络)')


case when then else end

例子:判断字段语句  || 实现行列转换
SELECT CASE 2 WHEN 2 THEN 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知青先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值