sql_01

From ... Where ... Select... ordey by

oracle

连接列值
select 'a'||'b'||null||'c' from duall -- abc

case when .. then ..
when .. then ..
...
else ..
end
else子句可选,如果没有使用else,对于不满足判断条件的行,case表达式会返回null

rownum<=5
1.oracle执行查询
2.oracle获取第一个符合条件的行,将它叫做第1行
3.有5行了么?如果没有,那么oracle就再返回行,因为它要满足行号小于等于5的条件,如果到了第5行,那么,oracle就不再返回行
4.oracle获取下一行,并递增行号(2..3..4..)
5.返回第3步
oracle的rownum数值是在获取每行之后才赋予的,所以,通过rownum=5来返回第5行,是错误的。

从表中随机返回n条记录
select * from (select * from tb_employee_mst t order by dbms_random.value()) where rownum <=5
在order by子句中指定数字常量时,是要求根据select列表中相应位置的列排序,在order by子句中使用函数时,则按函数在每一行计算结果排序

is null&is not null

like '%a%' %匹配任何字符序列
like '_a' _匹配单个字符

order by(asc) 升序排序 order by desc 降序排列
order by中,优先次序是从左到右,如果使用select列表列的数字位置排序,那么这个数值不能大于select列表中项目的数目。如果按照select列表中没有的列排序,必须显式的给出排序的列名。如果在查询中使用group by或distinct,则不能按照select列表中没有的列来排序

select substr('abcdefg',3),substr('abcdefg',3,4),substr('abcdefg',length('abcdefg'))from dual
-- cdefg cdef g

replace('将要更改的字符串','被替换掉的字符串','替换字符串')
select replace ('111222333444','222','888') from dual --'111888333444'

TRANSLATE(char, from, to)
返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。若from比to字符串长,那么在from中比to中多出的字符将会被删除。
select translate('abcdefgab','abc','wo') from dual -- wodefgwo
select translate('abcdecfgbc','abc','wo') from dual -- wodefgo
select translate('abcdecfgbc','abc','wowerty') from dual -- wowdewfgow

处理排序空值
select * from tb_employee_mst t order by t.dimission_dt nulls first
select * from tb_employee_mst t order by t.dimission_dt nulls last

根据数据项的键排序--例如 如果job是salesman,根据comm排序,否则,根据sal排序
order by case when job = 'salesman' then comm else sal end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值