Oracle中SQL语句学习二(like,转义,order by)
来源:互联网 发布:网络主播 英语 编辑:程序博客网 时间:2024/04/28 06:36
一、like操作符
like操作符用于执行模糊查询,当执行查询操作时,如果不能完全确定某些信息的查询条件,但这些信息又具有某些特征,那么可以使用模糊查询,当执行模糊查询时,需要使用通配符"%"和"_",其中"%"(百分号)用于表示0个或多个字符,"_"(下划线)用于表示一个字符,如果要将"%"、"_"、"'"、"&"做为查询条件时,那么需要通过escape对"%"、"_"进行转义或通过ASCII编码进行转义,而"&"则通过ASCII编码或"||"将查询的字符进行拼接,"'"则通过ASCII编码或通过''替换'进行转义,下面实例说明使用like操作符的方法:
1、查询首字符为"a"的所有员工姓名的信息:
2、查询第三个字符为大写"A"的所有员工姓名的信息:
二、Oracle转义符
1、对"&"进行转义,update、insert、select操作均需要进行转义,但是不能通过转义字符查找,可以通过ASCII编码或"||"将查询字符拼接进行查询,例如:
2、对"-"进行转义,insert、update操作可以不需要转义,但是select操作需要通过escape或通过ASCII进行转义,例如:
3、对"%"进行转义,insert、update操作可以不需要转义,但是select操作需要通过escape或通过ASCII进行转义,例如:
3、对"'"进行转义,insert、update操作可以不需要转义,但是select操作需要通过 ''替换'或通过ASCII进行转义,例如:
--用两个''代替'。
update temps set name='index''99' where id=67;
--用ascii码
select * from cip_temps where name like '%'||chr(39)||'%';
三、in操作符
IN操作符用于执行列表匹配操作,当列或表达式结果匹配于IN列表中的任意一个值时,则返回true。例如:
四、is null操作符
is null 操作符用于检测列或表达式结果是否为null,如果结果为null则返回true,否则返回false,例如:
当于null进行进行比较时,不能使用"="、'<>'等逻辑操作符进行比较,尽管使用他们进行比较不会报错,但是条件子句返回总是false。例如:
五、order by子句
在执行查询操作时,经常对查询的结果进行排序,以显示更直观的数据,数据排序是使用order by子句来实现的,其语法是:
主意:当select语句中同是包含多个子句(where、group by、having、order by等)时,order by必须是最后一条子句。
1、升序排序
默认情况下,当使用order by执行排序操作时,数据以升序方式排序,也可以在排序列后制定ASC关键字。例如:
注意:当执行升序排序时,如果排序列包含null值,那么null会显示在最后面,Oracle在Order by 时缺省认为null是最大值。
2、降序排序
当使用order by 子句进行排序操作时,如果进行降序排序操作,则必须制定desc关键字。例如:
注意:当执行降序排序时,如果排序列包含null值,那么null会显示在最前面,Oracle在Order by 时缺省认为null是最大值
3、使用多列排序
当使用order by子句进行排序操作时,不仅可以基于单列或单个表达式进行排序,也可以基于多个列或多个表达式进行排序,当基于多个列或多个表达式进行排序操作时,首先按照第一列或表达式进行排序,当第一列或表达式存在相同数据时,然后以第二列或表达式进行排序操作,以此类推.....,例如:
4、使用非选择列进行排序
可以使用没有必须显示的列或表达式进行排序,例如:
5、使用列别名进行排序
如果为列或表达式定义了别名,那么进行排序操作时,可以通过别名进行排序,例如:
6、根据列位置编号进行排序
可以按照列或表达式在选择列表中的位置进行排序,例如:
like操作符用于执行模糊查询,当执行查询操作时,如果不能完全确定某些信息的查询条件,但这些信息又具有某些特征,那么可以使用模糊查询,当执行模糊查询时,需要使用通配符"%"和"_",其中"%"(百分号)用于表示0个或多个字符,"_"(下划线)用于表示一个字符,如果要将"%"、"_"、"'"、"&"做为查询条件时,那么需要通过escape对"%"、"_"进行转义或通过ASCII编码进行转义,而"&"则通过ASCII编码或"||"将查询的字符进行拼接,"'"则通过ASCII编码或通过''替换'进行转义,下面实例说明使用like操作符的方法:
1、查询首字符为"a"的所有员工姓名的信息:
- select * from temps where name like "a%";
2、查询第三个字符为大写"A"的所有员工姓名的信息:
- select * from temps where name like "__A%";
二、Oracle转义符
1、对"&"进行转义,update、insert、select操作均需要进行转义,但是不能通过转义字符查找,可以通过ASCII编码或"||"将查询字符拼接进行查询,例如:
- update temps set name='myjsp?page=1'|| '&' ||'page=10' where id=27;
- update temps set name='index.do?page=1' || chr(38) || 'page=10' where id=88;
- select * from temps where name like '%'||chr(38)||'%';
- select *from temps where name like '%.do%' ||chr(38)|| '%';
2、对"-"进行转义,insert、update操作可以不需要转义,但是select操作需要通过escape或通过ASCII进行转义,例如:
- update temps set name='index.do_1' where id=28;
- select * from temps where name like 'a=_%' escape '=';
- select * from temps where name like 'a__%' escape '_';
- select * from temps where name like '__/_%' escape '/';
- select * from temps where name like '%\_%' escape '\';
- ----查询带有--字符并且以ab开始的记录的记录
- select * from temps where name like 'ab=_=_%' escape '=';
- select * from temps where name like '%\_\_%' escape '\';
3、对"%"进行转义,insert、update操作可以不需要转义,但是select操作需要通过escape或通过ASCII进行转义,例如:
- update temps set name='index.do%' where id=100;
- --查询带有%字符的记录
- select * from temps where name like '%\%%' escape '\';
- select * from cip_temps where name like 'index.do=%%' escape '=';
- ---查询带有%%字符的记录
- select * from temps where name like 'index.do\%\%%' escape '\';
- select * from temps where name like '%/%/%%' escape '/';
- select * from temps where name like '%=%=%%' escape '=';
- select * from temps where name like '%'%';
3、对"'"进行转义,insert、update操作可以不需要转义,但是select操作需要通过 ''替换'或通过ASCII进行转义,例如:
--用两个''代替'。
update temps set name='index''99' where id=67;
--用ascii码
select * from cip_temps where name like '%'||chr(39)||'%';
三、in操作符
IN操作符用于执行列表匹配操作,当列或表达式结果匹配于IN列表中的任意一个值时,则返回true。例如:
- select * from temps where name in('aa','bb','cc');
四、is null操作符
is null 操作符用于检测列或表达式结果是否为null,如果结果为null则返回true,否则返回false,例如:
- select * from temps where name is null;
当于null进行进行比较时,不能使用"="、'<>'等逻辑操作符进行比较,尽管使用他们进行比较不会报错,但是条件子句返回总是false。例如:
- select * from temps where name = null;
- 结果是没有查询出记录。
五、order by子句
在执行查询操作时,经常对查询的结果进行排序,以显示更直观的数据,数据排序是使用order by子句来实现的,其语法是:
- SELECT "栏位名" FROM "表格名" [WHERE "条件"]ORDER BY "栏位名" [ASC, DESC]
主意:当select语句中同是包含多个子句(where、group by、having、order by等)时,order by必须是最后一条子句。
1、升序排序
默认情况下,当使用order by执行排序操作时,数据以升序方式排序,也可以在排序列后制定ASC关键字。例如:
- select * form order by id[asc]
注意:当执行升序排序时,如果排序列包含null值,那么null会显示在最后面,Oracle在Order by 时缺省认为null是最大值。
2、降序排序
当使用order by 子句进行排序操作时,如果进行降序排序操作,则必须制定desc关键字。例如:
- select * form order by id desc
注意:当执行降序排序时,如果排序列包含null值,那么null会显示在最前面,Oracle在Order by 时缺省认为null是最大值
3、使用多列排序
当使用order by子句进行排序操作时,不仅可以基于单列或单个表达式进行排序,也可以基于多个列或多个表达式进行排序,当基于多个列或多个表达式进行排序操作时,首先按照第一列或表达式进行排序,当第一列或表达式存在相同数据时,然后以第二列或表达式进行排序操作,以此类推.....,例如:
- select *from temps order by age asc,name desc;
4、使用非选择列进行排序
可以使用没有必须显示的列或表达式进行排序,例如:
- select age from temps order by name desc;
5、使用列别名进行排序
如果为列或表达式定义了别名,那么进行排序操作时,可以通过别名进行排序,例如:
- select name as "姓名" from cip_temps order by "姓名";
6、根据列位置编号进行排序
可以按照列或表达式在选择列表中的位置进行排序,例如:
- select name,age from temps order by 2 desc;
0 0
- Oracle中SQL语句学习二(like,转义,order by)
- oracle 基本语句练习(一) where, between ,null, like,转义字符,order by
- oracle 转义符(escape)和order by (从实践中学习Oracle SQL-第二章)
- sql 中ORDER BY 语句
- sql语句中limit和order by
- SQL ORDER BY 语句
- SQL语句ORDER BY
- SQL: order by (Oracle)
- sql语句中group by 与order by的区别
- SQL中 group by 1, order by 1 语句是什么意思
- SQL语句like子句中的转义符
- SQL语句like子句中的转义符
- SQL语句like子句中的转义符
- SQL语句like子句中的转义符
- SQL语句like子句中的转义符
- Oracle中SQL语句学习五(统计分组语句group by和having)
- SQL语句之ORDER BY
- sql 中 order by
- 现在是不是网管什么的都被人看不起了哇~~
- RMI远程方法调用简单实例
- spring整合quartz
- FPGA 快捷拓展以太网
- 现在手机的APP用什么开发的哇、我也想学APP开发
- Oracle中SQL语句学习二(like,转义,order by)
- 警惕逻辑表达式中的无符号类型运算(C语言类型转换)
- android.mk 详解
- 分享一些Android免费课程给大家
- 2014多校9(1007)hdu4966(最小树形图)
- Error : Unexpected protocol character/message
- jdbc调用Oracle存储过程
- NYOJ-小学生算术
- android 图像动画常用的效果