oracle-1

本文介绍了 Oracle SQL 中的实用技巧,包括使用 inline 视图进行一次性数据操作、使用 case 语句进行条件判断、限定查询结果的行数、使用 coalesce 函数处理空值、按模式搜索数据以及排序和字符串处理等高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

  • select table_name from user_tables;

 

  • inline视图是指在查询或者更新或者其他操作中使用一个类似与视图一样得结构,但实际上这个视图是一次性的,其结构没有被存储到oracle中,只是临时使用而已。
  • 连接操作 ||
  • select语句:select ename,sal,
           case when sal<=2000 then 'UNDERPAIND'
                when sal>=4000 then 'OVERPAID'
                else 'OK'
           end as status
     from emp
  • ENAME             SAL STATUS
    ---------- ---------- ----------
    SMITH             800 UNDERPAIND
    ALLEN            1600 UNDERPAIND
    WARD             1250 UNDERPAIND
    JONES            2975 OK
  • 限定返回的行数:select * from emp where rownum<=5;注意,先取行,判断条件,在递增rownum。如果取第5行rownum=5,是错误的。因为第一行就不满足条件,永远是第一行。
  • coalesce--函数用实际的值来替换空值,语句如下:

         select coalesce(comm,0) from emp;

  • 按模式搜搜:select ename,job from emp where deptno in (10,20)

                            and (ename like '%I%' or job like '%ER');

 

  • 排序 order by中,优先次序从左到右。一般情况下,可以按照select列表中没有的列来排序,但是必须显式地给出排序的序名。如果在查询中使用group by或distinct语句,则不能按照select列表中没有的列来排序。
  • 按照职位字段的最后两个字符排序:select ename,job from emp order by substr(job,length(job)-2);
  • translate 与 replace的区别 :
  •  TRANSLATE   ('abcd',   'ab',   '12')   ==>   '12cd'  
      TRANSLATE   ('12345',   '15',   'xx')   ==>   'x234x'  
      TRANSLATE   ('grumpy   old   possum',   'uot',   '%$*')   ==>       'gr%mpy   $ld   p$ss%m'  
      TRANSLATE   ('my   language   needs   the   letter   e',   'egms',   'X')    
      ==>  
            'y   lanuaX   nXXd   thX   lXttXr   X';  
      TRANSLATE   ('please   go   away',   'a',   NULL)   ==>   NULL  
       
      REPLACE   ('CAT   CALL',   'C')   ==>   'AT   ALL'  
      REPLACE   ('Zero   defects   in   period   99   reached   99%!',   '99',   '100')    
      ==>  
                  'Zero   defects   in   period   100   reached   100%!'  
      REPLACE   ('this   that   and   the   other',   'th',   'z')   ==>   'zis   zat   and   ze   ozer'  
  • 总结:translate是逐个代替,replace是组合代替。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值