oracle查询第二个字为a,Oracle中SQL语句学习二(like,转义,order by)
一、like操作符
like操作符用于執(zhí)行模糊查詢(xún),當(dāng)執(zhí)行查詢(xún)操作時(shí),如果不能完全確定某些信息的查詢(xún)條件,但這些信息又具有某些特征,那么可以使用模糊查詢(xún),當(dāng)執(zhí)行模糊查詢(xún)時(shí),需要使用通配符"%"和"_",其中"%"(百分號(hào))用于表示0個(gè)或多個(gè)字符,"_"(下劃線)用于表示一個(gè)字符,如果要將
"%"、"_"、"'"、"&"
做為查詢(xún)條件時(shí),那么需要通過(guò)escape對(duì)
"%"、"_"
進(jìn)行轉(zhuǎn)義或通過(guò)ASCII編碼進(jìn)行轉(zhuǎn)義,而"&"則通過(guò)ASCII編碼或"||"將查詢(xún)的字符進(jìn)行拼接,"'"則通過(guò)ASCII編碼或通過(guò)
''替換'
進(jìn)行轉(zhuǎn)義,下面實(shí)例說(shuō)明使用like操作符的方法:
1、查詢(xún)首字符為"a"的所有員工姓名的信息:
Oracle代碼
select?*?from?temps?where?name?like?"a%";
2、查詢(xún)第三個(gè)字符為大寫(xiě)"A"的所有員工姓名的信息:
Oracle代碼
select?*?from?temps?where?name?like?"__A%";
二、Oracle轉(zhuǎn)義符
1、對(duì)"&"進(jìn)行轉(zhuǎn)義,update、insert、select操作均需要進(jìn)行轉(zhuǎn)義,但是不能通過(guò)轉(zhuǎn)義字符查找,可以通過(guò)ASCII編碼或"||"將查詢(xún)字符拼接進(jìn)行查詢(xún),例如:
Oracle代碼
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、對(duì)"-"進(jìn)行轉(zhuǎn)義,insert、update操作可以不需要轉(zhuǎn)義,但是select操作需要通過(guò)escape或通過(guò)ASCII進(jìn)行轉(zhuǎn)義,例如:
Oracle代碼
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?'\';
----查詢(xún)帶有--字符并且以ab開(kāi)始的記錄的記錄
select?*?from?temps?where?name?like?'ab=_=_%'?escape?'=';
select?*?from?temps?where?name?like?'%\_\_%'?escape?'\';
3、對(duì)"%"進(jìn)行轉(zhuǎn)義,insert、update操作可以不需要轉(zhuǎn)義,但是select操作需要通過(guò)escape或通過(guò)ASCII進(jìn)行轉(zhuǎn)義,例如:
Oracle代碼
update?temps?set?name='index.do%'?where?id=100;
--查詢(xún)帶有%字符的記錄
select?*?from?temps?where?name?like?'%\%%'?escape?'\';
select?*?from?cip_temps?where?name?like?'index.do=%%'?escape?'=';
---查詢(xún)帶有%%字符的記錄
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、對(duì)"'"進(jìn)行轉(zhuǎn)義,insert、update操作可以不需要轉(zhuǎn)義,但是select操作需要通過(guò)?''替換'或通過(guò)ASCII進(jìn)行轉(zhuǎn)義,例如:
--用兩個(gè)''代替'。
update temps set name='index''99' where id=67;
--用ascii碼
select * from cip_temps where name like '%'||chr(39)||'%';
三、in操作符
IN操作符用于執(zhí)行列表匹配操作,當(dāng)列或表達(dá)式結(jié)果匹配于IN列表中的任意一個(gè)值時(shí),則返回true。例如:
Oracle代碼
select?*?from?temps?where?name?in('aa','bb','cc');
四、is null操作符
is null 操作符用于檢測(cè)列或表達(dá)式結(jié)果是否為null,如果結(jié)果為null則返回true,否則返回false,例如:
Oracle代碼
select?*?from?temps?where?name?is?null;
當(dāng)于null進(jìn)行進(jìn)行比較時(shí),不能使用"="、'<>'等邏輯操作符進(jìn)行比較,盡管使用他們進(jìn)行比較不會(huì)報(bào)錯(cuò),但是條件子句返回總是false。例如:
Oracle代碼
select?*?from?temps?where?name?=?null;
結(jié)果是沒(méi)有查詢(xún)出記錄。
五、order by子句
在執(zhí)行查詢(xún)操作時(shí),經(jīng)常對(duì)查詢(xún)的結(jié)果進(jìn)行排序,以顯示更直觀的數(shù)據(jù),數(shù)據(jù)排序是使用order by子句來(lái)實(shí)現(xiàn)的,其語(yǔ)法是:
Oracle代碼
SELECT?"欄位名"?FROM?"表格名"?[WHERE?"條件"]ORDER?BY?"欄位名"?[ASC,?DESC]
主意:當(dāng)select語(yǔ)句中同是包含多個(gè)子句(where、group by、having、order by等)時(shí),order by必須是最后一條子句。
1、升序排序
默認(rèn)情況下,當(dāng)使用order by執(zhí)行排序操作時(shí),數(shù)據(jù)以升序方式排序,也可以在排序列后制定ASC關(guān)鍵字。例如:
Oracle代碼
select?*?form?order?by?id[asc]
注意:當(dāng)執(zhí)行升序排序時(shí),如果排序列包含null值,那么null會(huì)顯示在最后面,Oracle在Order by 時(shí)缺省認(rèn)為null是最大值。
2、降序排序
當(dāng)使用order by 子句進(jìn)行排序操作時(shí),如果進(jìn)行降序排序操作,則必須制定desc關(guān)鍵字。例如:
Oracle代碼
select?*?form?order?by?id?desc
注意:當(dāng)執(zhí)行降序排序時(shí),如果排序列包含null值,那么null會(huì)顯示在最前面,Oracle在Order by 時(shí)缺省認(rèn)為null是最大值
3、使用多列排序
當(dāng)使用order by子句進(jìn)行排序操作時(shí),不僅可以基于單列或單個(gè)表達(dá)式進(jìn)行排序,也可以基于多個(gè)列或多個(gè)表達(dá)式進(jìn)行排序,當(dāng)基于多個(gè)列或多個(gè)表達(dá)式進(jìn)行排序操作時(shí),首先按照第一列或表達(dá)式進(jìn)行排序,當(dāng)?shù)谝涣谢虮磉_(dá)式存在相同數(shù)據(jù)時(shí),然后以第二列或表達(dá)式進(jìn)行排序操作,以此類(lèi)推.....,例如:
Oracle代碼
select?*from?temps?order?by?age?asc,name?desc;
4、使用非選擇列進(jìn)行排序
可以使用沒(méi)有必須顯示的列或表達(dá)式進(jìn)行排序,例如:
Oracle代碼
select?age?from?temps?order?by?name?desc;
5、使用列別名進(jìn)行排序
如果為列或表達(dá)式定義了別名,那么進(jìn)行排序操作時(shí),可以通過(guò)別名進(jìn)行排序,例如:
Oracle代碼
select?name?as?"姓名"?from?cip_temps?order?by?"姓名";
6、根據(jù)列位置編號(hào)進(jìn)行排序
可以按照列或表達(dá)式在選擇列表中的位置進(jìn)行排序,例如:
Oracle代碼
select?name,age?from?temps?order?by?2?desc;
總結(jié)
以上是生活随笔為你收集整理的oracle查询第二个字为a,Oracle中SQL语句学习二(like,转义,order by)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 软件工程基础-个人项目-数独的生成与求解
- 下一篇: dig命令