在oracle中,我們有時候會需要判斷一個字符串里邊是否包含有某一個串;首先,oracle為我們提供了instr這個函數:
instr( string1, string2 [, start_position [, nth_appearance ] ] )
參數分析:
string1,源字符串,要在此字符串中查找。 string2: 要在string1中查找的字符串。 start_position: 代表string1 的哪個位置開始查找。此參數可選,如果省略默認為1. 字符串索引從1開始。如果此參數為正,從左到右開始檢索,如果此參數為負,從右到左檢索,返回要查找的字符串在源字符串中的開始索引。 nth_appearance: 代表要查找第幾次出現的string2. 此參數可選,如果省略,默認為 1.如果為負數系統會報錯。
注意:如果String2在String1中沒有找到,instr函數返回0.
有了這個函數, 可以我們怎么用呢, 這個時候, dual就起作用了, 我們可以這樣:
select instr("xxxxxx", "xxx") from dual.
那么 dual到底是個什么東西呢?
dual是一個虛擬表,用來構成select的語法規則,oracle保證dual里面永遠只有一條記錄。我們可以用它來做很多事情,例如上邊,當我們需要使用一個函數時,就可以使用dual了。
dual是一個虛擬表,用來構成select的語法規則,oracle保證dual里面永遠只有一條記錄。我們可以用它來做很多事情,如下:
1、查看當前用戶,可以在 SQL Plus中執行下面語句 select user from dual;
2、用來調用系統函數
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--獲得當前系統時間
select SYS_CONTEXT('USERENV','TERMINAL') from dual;--獲得主機名
select SYS_CONTEXT('USERENV','language') from dual;--獲得當前 locale
select dbms_random.random from dual;--獲得一個隨機數
3、得到序列的下一個值或當前值,用下面語句
select your_sequence.nextval from dual;--獲得序列your_sequence的下一個值
select your_sequence.currval from dual;--獲得序列your_sequence的當前值
4、可以用做計算器 select 7*9 from dual;