oracle菜鸟日记1

1. 在查询数据字典视图的时候,使用where语句时,要注意后面的字符类型的查询需要大写,因为数据库存储的时候默认将字典里面的每个字段里面的内容按照大写来存储的。
例如:select * from user_constraints where table_name='大写表名'


2. 对于有内联视图的select查询语句,最外面的查询是最后执行的,要先将最外面的from后面的子句全部执行完毕后,才能执行select ..... where...;

但是,对于有connect by 树形迭代语句时,与最外面的select对应的where子句的位置一定要放在内联视图后面,而不能放在connect by 子句之后,否则会报错!
例如:select deptno,
          ltrim(sys_connect_by_path(ename,','),',') emps
  from (
       select deptno,
               ename,
   row_number() over (partition by deptno order by empno) rn,
count(*) over (partition by deptno) cnt
from emp
                     )
      where level=cnt   
      start with rn=1
      connect by prior deptno=deptno and prior rn=rn-1
      /
而不能写成:select deptno,
           ltrim(sys_connect_by_path(ename,','),',') emps
  from (
           select deptno,
               ename,
   row_number() over (partition by deptno order by empno) rn,
count(*) over (partition by deptno) cnt
from emp
               )
           start with rn=1
           connect by prior deptno=deptno and prior rn=rn-1
           where level=cnt
           /

注意:一定要搞清楚语句的执行顺序、和where子句所在的位置。


3. where empno in ('1993,2222,2233');肯定报错,因为我们很不细心的将括号中的看成了数字类型,但是其实,empno是数字类型,而括号里面的是字符类型。

解决方法:只能将其转换列


4.  在insert into table_name values (),在values和后面的括号之间一定要加个空格号


5. 对于null进行insert时可以用‘’代替


6. 对于ltrim(‘’,‘’)第三个参数要是删除的话就不用写,而对于translate(字符型)和replace(字符串型)要是删除的时候需要添加'';


7. 在开窗函数中,over (partition by .. order by ..)在partition by和order by之间不用逗号隔开,只需空格即可;


8. 看似是将行变换成列,实际上是将行与rownum进行笛卡尔基,变成多行,在从每行中提取出所需要的值;


9. replace和translate一般是一起用的,而instr和substr一般是一起用的(因为这两个函数都要用到数字(也就是字符所在的位置));


10. 注意:instr是字符型函数,instr(列名,'单个字符',起始位置,第几次出现);


11. where instr(translate(mixed,‘0123456789’,‘9999999999’),‘9’);精妙之处,可以筛选出纯数字或者纯字母


12. 对于一个字段的每一行都有几个字符串的话,如果要求将每一行的几个字符串转换成每行一个字符串。则需要笛卡尔基rownum。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值