oracle使用日常总结

导读:本篇文章讲解 oracle使用日常总结,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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');

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/15996.html

(0)
小半的头像小半

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!