oracle常用函式

2021-07-09 03:21:32 字數 1722 閱讀 2744

oracle 查詢某個字元最後一次出現的位置

(1)oracle中實現擷取字串:substr

substr(string, start_position, [length])

其中,string是元字串,start_position為開始位置,length是可選項,表示子字串的位數。

例子:substr('abcdefg', 0);    -- 返回結果是:abcdefg,從0位開始擷取後面所有

substr('abcdefg', 2);    -- 返回結果是:cdefg,從2位開始擷取後面所有

substr('abcdefg', 0, 3);  -- 返回結果是:abc,從0位開始往後擷取3個字元長度

substr('abcdefg', 0, 100);  -- 返回結果是:abcdefg,雖然100超出了元字串長度,但是系統會按元字串最大數量返回,不會影響返回結果

substr('abcdefg', -3);  -- 返回結果是:efg,如果是負數,則從尾部往前數,擷取-3位置往後的所有字串

(2)查詢字串位置:instr

例子:instr('abcdabcdaef', 'ab');   -- 返回結果是:1,因為instr字串索引從1開始,所以是1不是0

instr('abcdabcdaef', 'da', 1, 2);   -- 返回結果是:8,返回第二次出現'da'的位置

instr('a bcdabcdaef', 'da', 1, 2);  -- 返回結果是:9,由於我在元字串中加了乙個空格,空格仍然算乙個字元

(3)替換字串:replace

replace(str1, str2, str3)

其表示的意思是:在str1中查詢str2,凡是出現str2的地方,都替換成str3。

replace('abcdefg', 'cde', 'cde');  -- 返回結果是:abcdefg

replace('abcdefg', 'cde', '');   -- 返回結果是:abfg,cde被替換成空字元

replace('abcdefg', 'cde');   -- 返回結果是:abfg,當不存在第三個引數時,cde直接被刪掉

本來我還以為oracle中也有系統自帶的那種像split這樣的拆分字串的函式,結果找了好久,發現居然沒有,網上有很多解決方法,我就不總結在這裡了,後面需要的時候視情況來寫。

2023年11月14日補充:

注意,上文提到的substr、instr等方法,至於首位是從0開始開始從1開始,上文中可能會存在一些錯誤,建議在使用的時候首先在資料庫中測試一下從0開始從1。

-- 起始位置引數為負數,從後倒數,但還是向後擷取指定長度的字元。起始引數0,1效果一樣。最後乙個引數為擷取的長度。

-- instr() 起始位置引數不能是0 ,為正數表示從左往右查詢, 為負數表示從右往左查詢。最後乙個引數為第幾次出現

select instr('abcdeabab','a', -1 ,2) from dual;

select instr('abcdeabab','a', -1) from dual;

Oracle常用函式

一 row number over 資料甲 1 select column name column name,data type,2 row number over partition by column name order by column name row num 3 from test c...

Oracle常用函式

數學函式 1.絕對值 o select abs 1 value from dual 2.取整 大 o select ceil 1.001 value from dual 3.取整 小 o select floor 1.001 value from dual 4.取整 擷取 o select trun...

oracle常用函式

1.concat c1,c2均為字串,函式將c2連線到c1的後面,如果c1為null,將返回c2.如果c2為null,則返回c1,如果c1 c2都為null,則返回null。他和操作符 返回的結果相同 select concat slobo svoboda username from dualuse...