oracle 截取字符(substr),檢索字符位置(instr) case when then else end語句使用 收藏
常用函數(shù):substr和instr
1.SUBSTR(string,start_position,[length]) 求子字符串,返回字符串
解釋:string 元字符串
start_position 開始位置(從0開始)
length 可選項(xiàng),子字符串的個(gè)數(shù)
For example:
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取從C開始之后所有字符
substr("ABCDEFG", 0, 3); //返回:ABC,截取從A開始3個(gè)字符
substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100雖然超出預(yù)處理的字符串最長(zhǎng)度,但不會(huì)影響返回結(jié)果,系統(tǒng)按預(yù)處理字符串最大數(shù)量返回。
substr("ABCDEFG", 0, -3); //返回:EFG,注意參數(shù)-3,為負(fù)值時(shí)表示從尾部開始算起,字符串排列位置不變。
2.INSTR(string,subString,position,ocurrence)查找字符串位置
解釋:string:源字符串
subString:要查找的子字符串
position:查找的開始位置
ocurrence:源字符串中第幾次出現(xiàn)的子字符串
For example:
INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串為'CORPORATE FLOOR', 目標(biāo)字符串為'OR',起始位置為3,取第2個(gè)匹配項(xiàng)的位置;返回結(jié)果為 14 '
oracle中l(wèi)ength()與lengthb()區(qū)別
oracle中l(wèi)ength()與lengthb()區(qū)別
OracleSQL.oracle中l(wèi)ength()與lengthb()區(qū)別
SQL> select length('阿豬') from dual;
LENGTH('阿豬')
--------------
2
SQL> select lengthb('阿豬') from dual;
LENGTHB('阿豬')
---------------
4
區(qū)別:length求得是字符長(zhǎng)度,lengthb求得是字節(jié)長(zhǎng)度。
----------------------------------------------------------------------------------------------------
SQL> select sysdate from dual;SYSDATE
--------------
26-9月 -05
SQL> select length(sysdate) from dual;
LENGTH(SYSDATE)
---------------
9
SQL> select lengthb(sysdate) from dual;
LENGTHB(SYSDATE)
----------------
10
length返回的是字符數(shù)
lengthb返回的是字節(jié)數(shù)
漢字“月”在length時(shí),返回的時(shí)1
而在lengthb時(shí)返回的時(shí)2
length指的是字符個(gè)數(shù),lengthb指的是字節(jié)數(shù)。字符個(gè)數(shù)跟數(shù)據(jù)庫(kù)字符集有很大關(guān)系。length和lengthb的參數(shù)都為varchar2型,因此length(sysdate)有一個(gè)隱式的類型轉(zhuǎn)換,實(shí)際上等同于length(to_char(sysdate)),ORACLE安裝好后默認(rèn)的NLS_DATE_FORMAT參數(shù)值為DD-MON-RR,結(jié)果就相當(dāng)于length('28-9月 -05')和
lengthb('28-9月 -05')了,其結(jié)果就是9和10