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
sql_01
猜你喜欢
转载自kangkan.iteye.com/blog/1558088
今日推荐
周排行