300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > oracle查询第二个字为a Oracle中SQL语句学习二(like 转义 order by)

oracle查询第二个字为a Oracle中SQL语句学习二(like 转义 order by)

时间:2021-10-30 14:32:45

相关推荐

oracle查询第二个字为a Oracle中SQL语句学习二(like 转义 order by)

一、like操作符

like操作符用于执行模糊查询,当执行查询操作时,如果不能完全确定某些信息的查询条件,但这些信息又具有某些特征,那么可以使用模糊查询,当执行模糊查询时,需要使用通配符"%"和"_",其中"%"(百分号)用于表示0个或多个字符,"_"(下划线)用于表示一个字符,如果要将

"%"、"_"、"'"、"&"

做为查询条件时,那么需要通过escape对

"%"、"_"

进行转义或通过ASCII编码进行转义,而"&"则通过ASCII编码或"||"将查询的字符进行拼接,"'"则通过ASCII编码或通过

''替换'

进行转义,下面实例说明使用like操作符的方法:

1、查询首字符为"a"的所有员工姓名的信息:

Oracle代码

select*fromtempswherenamelike"a%";

2、查询第三个字符为大写"A"的所有员工姓名的信息:

Oracle代码

select*fromtempswherenamelike"__A%";

二、Oracle转义符

1、对"&"进行转义,update、insert、select操作均需要进行转义,但是不能通过转义字符查找,可以通过ASCII编码或"||"将查询字符拼接进行查询,例如:

Oracle代码

updatetempssetname='myjsp?page=1'||'&'||'page=10'whereid=27;

updatetempssetname='index.do?page=1'||chr(38)||'page=10'whereid=88;

select*fromtempswherenamelike'%'||chr(38)||'%';

select*fromtempswherenamelike'%.do%'||chr(38)||'%';

2、对"-"进行转义,insert、update操作可以不需要转义,但是select操作需要通过escape或通过ASCII进行转义,例如:

Oracle代码

updatetempssetname='index.do_1'whereid=28;

select*fromtempswherenamelike'a=_%'escape'=';

select*fromtempswherenamelike'a__%'escape'_';

select*fromtempswherenamelike'__/_%'escape'/';

select*fromtempswherenamelike'%\_%'escape'\';

----查询带有--字符并且以ab开始的记录的记录

select*fromtempswherenamelike'ab=_=_%'escape'=';

select*fromtempswherenamelike'%\_\_%'escape'\';

3、对"%"进行转义,insert、update操作可以不需要转义,但是select操作需要通过escape或通过ASCII进行转义,例如:

Oracle代码

updatetempssetname='index.do%'whereid=100;

--查询带有%字符的记录

select*fromtempswherenamelike'%\%%'escape'\';

select*fromcip_tempswherenamelike'index.do=%%'escape'=';

---查询带有%%字符的记录

select*fromtempswherenamelike'index.do\%\%%'escape'\';

select*fromtempswherenamelike'%/%/%%'escape'/';

select*fromtempswherenamelike'%=%=%%'escape'=';

select*fromtempswherenamelike'%'%';

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。例如:

Oracle代码

select*fromtempswherenamein('aa','bb','cc');

四、is null操作符

is null 操作符用于检测列或表达式结果是否为null,如果结果为null则返回true,否则返回false,例如:

Oracle代码

select*fromtempswherenameisnull;

当于null进行进行比较时,不能使用"="、'<>'等逻辑操作符进行比较,尽管使用他们进行比较不会报错,但是条件子句返回总是false。例如:

Oracle代码

select*fromtempswherename=null;

结果是没有查询出记录。

五、order by子句

在执行查询操作时,经常对查询的结果进行排序,以显示更直观的数据,数据排序是使用order by子句来实现的,其语法是:

Oracle代码

SELECT"栏位名"FROM"表格名"[WHERE"条件"]ORDERBY"栏位名"[ASC,DESC]

主意:当select语句中同是包含多个子句(where、group by、having、order by等)时,order by必须是最后一条子句。

1、升序排序

默认情况下,当使用order by执行排序操作时,数据以升序方式排序,也可以在排序列后制定ASC关键字。例如:

Oracle代码

select*formorderbyid[asc]

注意:当执行升序排序时,如果排序列包含null值,那么null会显示在最后面,Oracle在Order by 时缺省认为null是最大值。

2、降序排序

当使用order by 子句进行排序操作时,如果进行降序排序操作,则必须制定desc关键字。例如:

Oracle代码

select*formorderbyiddesc

注意:当执行降序排序时,如果排序列包含null值,那么null会显示在最前面,Oracle在Order by 时缺省认为null是最大值

3、使用多列排序

当使用order by子句进行排序操作时,不仅可以基于单列或单个表达式进行排序,也可以基于多个列或多个表达式进行排序,当基于多个列或多个表达式进行排序操作时,首先按照第一列或表达式进行排序,当第一列或表达式存在相同数据时,然后以第二列或表达式进行排序操作,以此类推.....,例如:

Oracle代码

select*fromtempsorderbyageasc,namedesc;

4、使用非选择列进行排序

可以使用没有必须显示的列或表达式进行排序,例如:

Oracle代码

selectagefromtempsorderbynamedesc;

5、使用列别名进行排序

如果为列或表达式定义了别名,那么进行排序操作时,可以通过别名进行排序,例如:

Oracle代码

selectnameas"姓名"fromcip_tempsorderby"姓名";

6、根据列位置编号进行排序

可以按照列或表达式在选择列表中的位置进行排序,例如:

Oracle代码

selectname,agefromtempsorderby2desc;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。