欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle查询中空值转换,模糊查询,随机查询讲解

程序员文章站 2023-10-29 14:44:58
平常工作和学习过程中总结的oracle数据的些许知识。 一. 查询中空值转换,模糊查询,随机查询 基本的查询语法不是此文重点,在此只是将工作中常用的语法和函数和示例托举而出。 1. 空值转换函数 在...

平常工作和学习过程中总结的oracle数据的些许知识。

一. 查询中空值转换,模糊查询,随机查询

基本的查询语法不是此文重点,在此只是将工作中常用的语法和函数和示例托举而出。

1. 空值转换函数

在字段的查询和简单运算中,经常会遇到字段为空的现象,需要对空做简单处理,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