ORACLE單行函式與多行函式之二:字元函式示例
1.大小寫轉換
initcap(char) 把每個字串的首字元換成大寫
lower(char) 整個字串轉換成小寫upper(char) 整個字串轉換成大寫
BYS@bys1>Select lower(ename),upper(ename),initcap(ename) from emp where rownum<3;
LOWER(ENAM UPPER(ENAM INITCAP(EN
---------- ---------- ----------
smith SMITH Smith
allen ALLEN Allen
2.字元連線CONCAT和||
CONCAT (char1, char2) 連線char1和char2,注意:CONCAT只能連線兩個字串,連線三個將報錯。
BYS@bys1>select ename,job,ename,concat(ename,job) from emp where rownum<3;
ENAME JOB ENAME CONCAT(ENAME,JOB)
---------- --------- ---------- -------------------
SMITH CLERK SMITH SMITHCLERK
ALLEN SALESMAN ALLEN ALLENSALESMAN
BYS@bys1>select ename,job,ename,concat(ename,job,ename) from emp where rownum<3;
select ename,job,ename,concat(ename,job,ename) from emp where rownum<3
*
ERROR at line 1:
ORA-00909: invalid number of arguments
||連線符,一大優勢是可以在連續符中間新增指定的字元
BYS@bys1>select ename,job,ename,ename||ename||job from emp where rownum<3;
ENAME JOB ENAME ENAME||ENAME||JOB
---------- --------- ---------- -----------------------------
SMITH CLERK SMITH SMITHSMITHCLERK
ALLEN SALESMAN ALLEN ALLENALLENSALESMAN
BYS@bys1>select ename,job,ename,'mingzi '||ename||ename||' gongzuo '||job from emp where rownum<3;
ENAME JOB ENAME 'MINGZI'||ENAME||ENAME||'GONGZUO'||JOB
---------- --------- ---------- -----------------------------------------------
SMITH CLERK SMITH mingzi SMITHSMITH gongzuo CLERK
ALLEN SALESMAN ALLEN mingzi ALLENALLEN gongzuo SALESMAN
3.求字串的長度;length 字串要單引
length--按照字,可以求字串長度,也可以求數字的長度
lengthb--按位元組
lengthc--unicode的長度
BYS@bys1>select ename,length(ename),sal,length(sal) from emp where rownum<5;
ENAME LENGTH(ENAME) SAL LENGTH(SAL)
---------- ------------- ---------- -----------
SMITH 5 800 3
ALLEN 5 1600 4
WARD 4 1250 4
JONES 5 2975 4
SQL> select length('白不'),length('bai'), lengthb('白不'),lengthb('bai'),lengthc('白不'),lengthc('bai') from dual;
LENGTH('白不') LENGTH('BAI') LENGTHB('白不') LENGTHB('BAI') LENGTHC('白不') LENGTHC('BAI')
-------------- ------------- --------------- -------------- --------------- --------------
2 3 6 3 2 3
4.擷取,SUBSTR(string,start,count) 從start開始,擷取count個。
如果不指定count,則預設擷取到最後一個字元。如果start為負數,則從倒數第N個字元擷取。
BYS@bys1>select substr('15912345678',4,8),substr('15912345678',4),substr('15912345678',-8,8) from dual;
SUBSTR('15912345678',4,8) SUBSTR('15912345678',4) SUBSTR('15912345678',-8,8)
------------------------- ----------------------- --------------------------
12345678 12345678 12345678
5.在右/右邊填充字元 LPAD和RPAD
BYS@bys1>select lpad('abc',5,'*'),rpad('abc',5,'%') from dual;
LPAD( RPAD(
----- -----
**abc abc%%
6.刪除左/右邊的指定字元trim, LTRIM和RTRIM
從下面語句可以看出,只能刪除最左或最或邊同指定字元相同的字元,如有多個連續的同指定一樣的字元,可以連續刪除。
SQL> select ltrim('*a%%abc**a**','%'), ltrim('%%abc**a**','%'),rtrim('*a%%abc**a**','*'),rtrim('%%abc**a','*') from dual;
LTRIM('*A%%ABC**A**','%') LTRIM('%%ABC**A**','%') RTRIM('*A%%ABC**A**','*') RTRIM('%%ABC**A','*')
------------------------- ----------------------- ------------------------- ---------------------
*a%%abc**a** abc**a** *a%%abc**a %%abc**a
不指定字元時,預設過濾的為空格符
從下面語句可以看出,trim是預設是同時濾過兩邊的字元。
SQL> select length(ltrim(' abc ')),length(rtrim(' abc ')),length(trim(' abc ')) from dual;
LENGTH(LTRIM('ABC')) LENGTH(RTRIM('ABC')) LENGTH(TRIM('ABC'))
-------------------- -------------------- -------------------
5 5 3
SQL> select trim(leading '*' from '**abc%%'),trim(trailing '%' from '**abc%%'),trim(both '%' from '%%abc%%'),trim( '%'from
'%%abc%%') from dual;
TRIM(LEADING'*'FROM'**ABC%%') TRIM(TRAILING'%'FROM'**ABC%%') TRIM(BOTH'%'FROM'%%ABC%%') TRIM('%'FROM'%%ABC%%')
----------------------------- ------------------------------ -------------------------- ----------------------
abc%% **abc abc abc
7.替換 REPLACE('string','s1','s2');string希望被替換的字元或變數,s1被替換的字串,s2要替換的字串,
BYS@bys1>select replace('he love you','he','i') from dual;
REPLACE('H
----------
i love you
BYS@ bys3>select replace('s a',' ') from dual; ---去空格
RE
--
sa
8.instr:求子串在父串中的位置,0表示沒有在父串中找到該子串。
如果一個字串中有多個與子串對應的字元,只顯示第一個查詢到的字元。
instr('abcdabc','a','2') 從字串的第2個字元開始搜尋符合a的字元。不指定從第幾個字元開始的話,預設從第1個字元開始搜尋。
SQL>select instr('abcdabc','a','2'),instr('baabc','a'),instr('bbc','a') from dual;
INSTR('ABCDABC','A','2') INSTR('BAABC','A') INSTR('BBC','A')
------------------------ ------------------ ----------------
5 2 0
相關文章
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- Oracle分析函式與視窗函式Oracle函式
- 常見函式之單行函式函式
- oracle 函式Oracle函式
- oracle or 函式Oracle函式
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- Oracle中REGEXP_SUBSTR函式(字串轉多行)Oracle函式字串
- Python函式與lambda 表示式(匿名函式)Python函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- 深入理解 函式、匿名函式、自執行匿名函式函式
- webgl內建函式--幾何函式與矩陣函式Web函式矩陣
- webgl內建函式--向量函式與紋理查詢函式Web函式
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- Oracle常用函式Oracle函式
- 7 Oracle 函式Oracle函式
- Oracle 字串函式Oracle字串函式
- Oracle 字串函式Oracle字串函式
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- 何時使用函式表示式與函式宣告函式
- oracle 10g函式大全–日期型函式Oracle 10g函式
- 建構函式與解構函式函式
- 函式節流與函式防抖函式
- 回撥函式 與 函式閉包函式
- python內建函式-eval()函式與exec()函式的區別Python函式
- JavaScript 匿名函式與具名函式執行效率比較JavaScript函式
- 第7章 IF函式 COUNTIF函式 SUMIF函式函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- golang count 單字元 字串 統計函式Golang字元字串函式
- excel 字元比較函式Excel字元函式
- C++行內函數、函式過載與函式預設引數C++函數函式
- (譯) 函式式 JS #2: 函式!函式JS
- Oracle分析函式之開窗函式over()詳解Oracle函式
- 函式外與函式內的變數函式變數
- 普通函式與函式模板呼叫規則函式
- 箭頭函式與普通函式區別函式
- java 回撥函式示例Java函式
- Python內建函式示例Python函式
- 核函式 多項式核函式 高斯核函式(常用)函式