Oracle WHERE条件和排序
Oracle WHERE条件和排序一、条件简介了解条件的一般形式最普通的条件如下形式:gyj@OCM> Select * from t1 where name='gyj2';ID NAME SALARY---------- ---------- ----------2 gyj2 8000条件只能跟在WHERE之后,用来限制输出的行。通常条件的形式是“列名 比较运算符 值”的形式。上面例子中,比较运算符就是“=”,也就是寻找NAME等于’gyj2’的行。www.zzzyk.com二、比较运算符1、运算符形式的比较符号(PPT)运算符 含义= 等于> 大于>= 大于等于< 小于<= 小于等于<> ,!= ,^= 不等于了解各种比较运算符的意义,这一块比较简单,我就不多说了。2、非运算符形式的比较符号 www.zzzyk.com了解BETWEEN、IN、LIKE、IS NULL 、EXIST的使用,并了解通配符在LIKE中的使用(1)列名 [NOT] BETWEEN …… AND …… :在两数之间(并且包括这两个数)gyj@OCM> select * from t1 where id between 4 and 6;ID NAME SALARY---------- ---------- ----------4 gyj4 150005 gyj5 120006 gyj6 12000显示雇员编号在4和6之间的。在BETWEEN前加上NOT,意义正好相反,表示在两数之外:gyj@OCM> select * from t1 where id not between 4 and 6;ID NAME SALARY---------- ---------- ----------2 gyj2 80003 gyj3 100007 gyj7 120001 gyj1 120001 gyj1 20000(2)列名 [NOT] IN (值1,值2,……) : 列值等于值1或等于值2或值3,等等。gyj@OCM> select * from t1 where id in (5,6,7);ID NAME SALARY---------- ---------- ----------5 gyj5 120007 gyj7 120006 gyj6 12000显示雇员编号等于5,6,7的,如果我们在IN前面加上NOT,显示的结果是id不等于5或6或7的行。gyj@OCM> select * from t1 where id not in (5,6,7);gyj@OCM> select * from t1 where id not in (5,6,7);ID NAME SALARY---------- ---------- ----------2 gyj2 80003 gyj3 100004 gyj4 150001 gyj1 120001 gyj1 20000(3)字符型列LIKE ‘字符串’ :字符串匹配运算符。gyj@OCM> select * from t1 where name like 'gyj2';ID NAME SALARY---------- ---------- ----------2 gyj2 8000看它的效果,它有点类似于“=”。但是它的功能比等号强。因为它可以使用如下通配符:_ : 对应任意的一个字符。% : 对应任意长度的任意字符。其中%的任意长度可以是从0到任意长度。而_对应的字符,必需是一个。gyj@OCM> select * from t1 where name like '_o%';ID NAME SALARY---------- ---------- ----------9 Joe 2200010 Tom 28000‘_o%’的意义是,第一个字符任意,第二个字符是o,第三个字符向后任意字符,且长度任意,可以没有,也就是只有两个字符,如’No’,o后面没有字符了。也可以如示例子中显示的结果Joe,Tom,o后面分别有1个字符。如果将条件变为:gyj@OCM> select * from t1 where name like '%o_';ID NAME SALARY---------- ---------- ----------9 Joe 2200010 Tom 2800011 guoyJoe 30000'%o_',这次是o的后面必须有一个字符,什么字符无所谓。o的前面有什么字符、有没有字符、有多长的字符都无所谓。有了这两个通配符,LIKE的功能就比等号强多了,比如我想显示所有姓“郭”的人,只要将条件定为:name like ‘郭%’ 即可。如果想显示姓郭的,但整个姓名是两个字的,’郭_’ ,姓名是三个字的’郭__’。等等。还有一点,在LIKE运算符后的字符串中,%和_不再是普通的字符,而有了特殊的含意。类似的情况我们前面也遇到过,单引号在字符串中也有特殊的含意,表示字符串的开始和结束。如果我想在字符串中使用普通意义的单引号,可以连续输入两个单引号,在字符串中,就表示一个普通意义的字符:单引号。想要在LIKE后的字符串中使用普通意义上的字符%、_ ,也需要额外的处理。比如:'DBA\_%' ESCAPE '\' ,它表示以DBA_开头的任意字符串。ESCAPE指定了一个字符 \ ,因此,在字符串中 \ 后的_ 将不再是特殊字符通配符,而是普通字符_。LIKE加通配符的功能是很强的。但它的查找速度要比普通的等号慢。这很好理解,功能强了后,必然性能要低。因此,在使用时要根据情况选用。不可滥用。gyj@OCM> select * from t1 where name like 'DBA\_%' ESCAPE '\';ID NAME SALARY---------- ---------- ----------14 DBA_y 30000gyj@OCM> select * from t1 where name like 'DBA\%%' ESCAPE '\';ID NAME SALARY---------- ---------- ----------15 DBA%y 30000(4)IS NULL 和 IS NOT NULL我们以前曾讲到过,NULL就是未知,不知道。任何数据和未知运算,结果还是未知。就像一个不知道是几的数加1,结果还是不知道是几。同样,上一个:Oracle分组与组函数
下一个:论Oracle碎片
- 更多Oracle疑问解答:
- 运行exp备份oracle数据库提示oracle-12154错误
- 有没有,生产Oracle Rman 备份脚本的工具啊!
- 初学orcle,希望有大大帮忙解说一下详细步骤,从登录oracle到创建表的过程
- oracle语句问题:一张user表,三个字段,id,name,time,插入记录比如:张三2007,李四2008,张三2011
- 如何写一个ORACLE触发器同步两个表中的数据?
- oracle 如何查看一个服务器上有多少个数据库.
- oracle 创建包的时候错误 求解
- oracle 重复列的问题
- oracle 中如何查处2星期前的数据
- 请教oracle数据库安装中的问题
- 请问谁能提供给我标准的oracle ERP的数据库表结构并详细说明各表主要的作用?
- 安装oracle遇到的问题 invalid entry CRC (expected 0x3e12e795 but got 0x9db0e9fd)
- 我的是ORACLE 10G,在RMAN中如何按指定的时间恢复数据文件啊?
- oracle为什么没有自动增长列
- oracle快捷键都有哪些啊?