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