2011-03-29 12:10:09
| 分類:
預設分類
| 標籤:
instr
code
select
字串occupation |
字型大小大中小
訂閱 instr
(源字串, 目標字串, 起始位置, 匹配序號)
在oracle
/plsql中,instr函式返回要擷取的字串在源字串中的位置。只檢索一次,就是說從字元的開始
到字元的結尾就結束。
語法如下:
引數分析:
string1
源字串,要在此字串中查詢。
string2
要在string1中查詢的字串.
start_position
代表string1 的哪個位置開始查詢。此引數可選,如果省略預設為1. 字串索引從1開始。如果此引數為正,從左到右開始檢索,如果此引數為負,從右到左檢索,返回要查詢的字串在源字串中的開始索引。
代表要查詢第幾次出現的string2. 此引數可選,如果省略,預設為 1.如果為負數系統會報錯。
注意:如果string2在string1中沒有找到,instr函式返回0.
示例:select instr('syranmo','s') from dual; -- 返回 1
select instr('syranmo','ra') from dual; -- 返回 3
1 select instr('syran mo','a',1,2) from dual; -- 返回 0
(根據條件,由於a只出現一次,第四個引數2,就是說第2次出現a的位置,顯然第2次是沒有再出現了,所以結果返回0。注意空格也算乙個字元!)
select instr('syranmo','an',-1,1) from dual; -- 返回 4
(就算是由右到左數,索引的位置還是要看『an』的左邊第乙個字母的位置,所以這裡返回4)
select instr('abc','d') from dual; -- 返回 0
注:也可利用此函式來檢查string1中是否包含string2,如果返回0表示不包含,否則表示包含。
對於上面說到的,我們可以這樣運用instr函式。請看下面示例:
如果我有乙份資料,上面都是一些員工的工號(字段:code),可是我現在要查詢出他們的所有員工情況,例如名字,部門,職業等等,這裡舉例是兩個員工,工號分別是』a10001′,』a10002′,其中假設staff是員工表,那正常的做法就如下:
1 2 select code , name , dept, occupation from staff where code in ('a10001','a10002');
或者:select code , name , dept, occupation from staff where code = 'a10001' or code = 'a10002';
有時候員工比較多,我們對於那個』覺得比較麻煩,於是就想,可以一次性匯出來麼?這時候你就可以用instr函式,如下:
select code , name , dept, occupation from staff where instr('a10001,a10002',code)>0;
查詢出來結果一樣,這樣前後只用到兩次單引號,相對方便點。
還有乙個用法,如下:
select code, name, dept, occupation from staff where instr(code, '001') > 0;
等同於select code, name, dept, occupation from staff where code like '%001%' ;
Oracleinstr函式詳解
instr 源字串,目標字串,起始位置,匹配序號 在oracle plsql中,instr函式返回要擷取的字串在源字串中的位置。只檢索一次,就是說從字元的開始 到字元的結尾就結束。語法如下 instr string1,string2 start position nth appearance 引數分...
oracle instr函式的使用
instr 源字串,目標字串,起始位置,匹配序號 在oracle plsql中,instr函式返回要擷取的字串在源字串中的位置。只檢索一次,就是說從字元的開始 到字元的結尾就結束。語法如下 引數分析 string1 源字串,要在此字串中查詢。string2 要在string1中查詢的字串.start...
Oracle instr函式簡單用法
oracle中instr的用法 instr方法的格式為 instr 源字串,要查詢的字串,從第幾個字元開始,要找到第幾個匹配的序號 返回找到的位置,如果找不到則返回0.例如 instr corporate floor or 3,2 中,源字串為 corporate floor 在字串中查詢 or 從...