平常工作和学习过程中总结的oracle数据的些许知识。
一. 查询中空值转换,模糊查询,随机查询
基本的查询语法不是此文重点,在此只是将工作中常用的语法和函数和示例托举而出。
1. 空值转换函oracle账号数
在数据库字段的查询和简单运算中,经常会遇到字段为空的现象,需要对空做简单处理,oracle提供两种空值转换函数:nvl() 和coalesce()。
nvl()函数
语法:nvl(字段,表达式)
如果字段为空值,nvl返回值为表达式的值,否则返回字段的值。该函数的目的是把一个空值(null)转换成一个实际的值,空值转化要求替换的数值要匹配原字段的数据类型。
nvl(comm,0),若comm是null则用0替换;
coalesce函数
语法:coalesce(表达式1,表达式2,表达式3…)
coalesce与nvl的区别:
coalesce可以有多个参数,意思是取第一个不为空的值,而nvl只能有两个参数,只对第一个参数做空值处理。
2.模糊查询
oracle中模糊查询常用的就两个字符(_和%)
_: 匹配一个字符,%: 匹配多个字符;需要注意的是在遇到查找内容含有_,%等特殊字符的,需要做转义。
//查找所有名字中含有ABC的人员信息select * from user where username like '%ABC%';//查找名字中第二个字符开始以ABC开始的人员信息select * from user where username like '_ABC%'; //查找含有_ABC,使用\转义select * from user where username like '\_ABC' escape '\';//查找名字中含有'\'的 select * from user where username like '%\\%' escape '\';
3. 随机查询 dbms_random.value()函数
dbms_random是一个可以生成随机数值或者字符串的程序包。
这个包有initialize()、seed()、terminate()、value()、normal()、random()、string()等几个函数,但value()是最常用的.
SQL> select dbms_random.value() from dual; DBMS_RANDOM.VALUE() ------------------- 0.265729284748573
-value()的用法常用的有两种
没有参数,会返回范围从0.0到1.0的值,但不包括1.0,如下: value带有两个参数,会返回两个参数之间的值,没有顺序之分,将会生成下限到上限之间的数字,但不包含上限,如下:
常用的就是随机获取n条记录:order by dbms_random.value();
select dbms_random.value() from dual 结果为:0.265729284748573 select dbms_random.value(1,7) from dual select empno,ename from (select * from emp order by dbms_random.value()) where rownum <=3