1. 程式人生 > >Oracle-19-like運算子&轉義操作符

Oracle-19-like運算子&轉義操作符

一、LIKE比較運算子

LIKE比較運算子也可以稱為萬用字元。LIKE運算子可以使用以下兩個萬用字元“%”和“_”,其中“%”代表零個或多個字元,“_”代表一個且只能是一個字元。

 

比如:如果您只記得SALESMAN的第一個字元為S,第三個字元為L,第五個字元為S,那麼查詢語句該怎麼寫?

SQL>select empno, ename, sal, job from emp where job like‘S_L_S%’

 

例1:在當前student表中查詢出所有陳姓學生的資訊。

解:先檢視student表所有資訊

 

LIKE萬用字元找出所有陳姓學生的資訊

 

LIKE萬用字元找出所有姓陳且名字為2個字的學生的資訊

 

二、轉義(escape)操作符

提問:如果要查詢的字串中含有“_”或“%”,又該怎麼處理?

 

解決:可以使用轉義(escape)關鍵字來完成此任務,為此先建立一個臨時的表,之後再往該表中插入1行記錄,其值包含萬用字元。

 

執行語句:

(1)create table dept_temp as select *from dept;

(2)insert into dept_temp values (88,‘IT_RESEARCH’, ‘BEIJING’);

(3)select * from dept_temp where dname like ‘IT\_%’ escape ‘\’;

 

解釋:定義’\’為轉義(escape)符,即在’\’之後的’_’字元已經不是萬用字元,而是它本來的含義,即下劃線。

 

例2:在當前student表中搜索出所有含有下劃線的學生資訊

解:首先查詢當前student表資訊:

 

我們先用’_’進行查詢,發現找不到

 

那是因為like後面的’_’是萬用字元,表示有且只有一個字元,也就是說,上圖中的命令其實是查詢名字只有1個字的學生資訊,當然查不到。

現在用轉義字元查詢

 

對於命令:

SQL>select * from student where sname like ‘%\_%’ escape ‘\’;

其中’%\_%’一頭一尾兩個%意思是萬用字元:含有零個或多個字元,中間\是轉義運算子,也就是\_表示的是下劃線,而不是LIKE萬用字元,那麼’%\_%’的意思就是名字含有下劃線的學生,該下劃線前後都可以有字元,也可以都沒有字元。

另外,$也是轉義運算子!作用和\一樣。