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