oracle使用日常总结

1. select 中包含@字符

查询数据库 dbname 那里的 dbuser用户下的table 表。其中nvl函数表示khyyb字段为null时,展示0

select k.activity_id, nvl(k.khyyb,0) khyyb from dbuser.table@dbname k

2. 变量为number类型与varchar2类型的转换

今天再使用Oracle时,发现oracle智能化的一方面:

  • 若列为varchar2类型,用其作为where条件时,变量为number类型时会自动将变量转换为varchar2类型,而不是将列转换为varchar2类型。

如下两条语句效果一样,其中task_status类型为VARCHAR2(2)

select * from trackservice.t_tst_customer_info u
where u.task_status = 0 

select * from trackservice.t_tst_customer_info u
where u.task_status = '0' 

3. Parttion by

Parttion by关键字是Oracle中分析性函数的一部分,用于给结果集进行分区。它和聚合函数Group by不同的地方在于它只是将原始数据进行名次排列,能够返回一个分组中的多条记录(记录数不变),而Group by是对原始数据进行聚合统计,一般只有一条反映统计值的结果(每组返回一条)。

按照课程对学生的成绩进行排序:

--row_number() 顺序排序
select name,course,row_number() over(partition by course order by score desc) rank from student;

--rank() 跳跃排序,如果有两个第一级别时,接下来是第三级别
select name,course,rank() over(partition by course order by score desc) rank from student;

--dense_rank() 连续排序,如果有两个第一级别时,接下来是第二级别 
select name,course,dense_rank() over(partition by course order by score desc) rank from student;

TIPS:

使用rank over()的时候,空值是最大的,如果排序字段为null, 可能造成null字段排在最前面,影响排序结果。

可以这样:rank over(partition by course order by score desc nulls last)

详细看 http://www.cnblogs.com/qiuting/p/7880500.html

4. 插入多行

ORACLE 插入多行和Mysql插入多行是不一样的。

-- ORACLE 插入多行
INSERT ALL
INTO T_WEEK_REPORT_SEND(ID ,LOGIN_USER_ID)
VALUES  ('123456','')
INTO T_WEEK_REPORT_SEND(ID ,LOGIN_USER_ID)
VALUES ('654321','')
SELECT 1 FROM dual;

--Mysql插入多行
insert into t_soup(content,hits) values
  ('如果有一天让我遇到一个会把我当做书籍来用心阅读的男人,我希望他使用的是:盲文。','2'),
('擦干眼泪不是为了不要再哭,擦干眼泪是为了看清楚。','3');

如遇问题,持续更新中。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值