关闭

oracle数据库使用学习

145人阅读 评论(0) 收藏 举报
分类:

1.查询时间字段问题:

用sql语句查询的时候,需要将字符串转换,to_timestamp或者to_date

where insert_time>to_timestamp('2013-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss')

2.树操作(select…start with…connect by…prior)

http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html

connect by prior m.parent=m.id; 是查询所有的父节点

connect by m.parent=prior m.id; 是查询所有的子节点

level,connect_by_root,connect_by_isleaf,sys_connect_by_path,lpad(' ', (level-1)*2, ' ')补空格

3.in()中的对象不能超过1000个,超过了就只能自己拆分

where  a in(...) or a in(...)

4.行列转换,oracle的转换方式比较多,常规的数据库都是使用case when才能实现

1)数据库常规方法:

a.concat和||进行字段拼接

b.WMSYS.WM_CONCAT进行分隔拼接 

c.case when语句

2) oracle自带函数,用起来都很简单,可以根据具体的使用情况来进行选择

a.DECODE函数-DECODE(value,if1,then1,if2,then2,if3,then3,...,else)

sum(decode(....)) ... group by...

b.在Oracle 11g中,Oracle 又增加了2个查询:pivot(行转列) 和unpivot(列转行)

c.列转行函数 Listagg(),  LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)

5.字段合并和group by冲突,前面如果对字段进行了合并操作,再次对该字段进行group by的时候必须也要进行合并操作

select a||b from table1 group by a(错误)

select concat(a,b) from table1 group by a(错误)

select a||b from table1 group by a||b (正确)

select concat(a,b) as c from table1 group by concat(a,b)(正确)

oracle中group by的字段必须在select中全部明确的查询出来

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:95671次
    • 积分:1866
    • 等级:
    • 排名:千里之外
    • 原创:88篇
    • 转载:23篇
    • 译文:2篇
    • 评论:17条
    文章分类
    最新评论