【函數】Oracle函數系列(1)--字元函數 1 BLOG文檔結構圖 2 前言部分 2.1 導讀和註意事項 各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~: ① 常見字元函數(lower、upper、initcap、concat、subst ...
【函數】Oracle函數系列(1)--字元函數
1 BLOG文檔結構圖
2 前言部分
2.1 導讀和註意事項
各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~:
① 常見字元函數(lower、upper、initcap、concat、substr、length、intr、lpad、rpad、trim、chr、ascii、replace、translate)的使用
② 判斷字元串中是否含有漢字
③ substr和instr的聯合使用
④ 替換函數的使用
Tips:
① 本文在itpub(http://blog.itpub.net/26736162)、博客園(http://www.cnblogs.com/lhrbest)和微信公眾號(xiaomaimiaolhr)上有同步更新。
② 文章中用到的所有代碼、相關軟體、相關資料及本文的pdf版本都請前往小麥苗的雲盤下載,小麥苗的雲盤地址見:http://blog.itpub.net/26736162/viewspace-1624453/。
③ 若網頁文章代碼格式有錯亂,請嘗試以下辦法:①去博客園地址閱讀,②下載pdf格式的文檔來閱讀。
④ 在本篇BLOG中,代碼輸出部分一般放在一行一列的表格中。其中,需要特別關註的地方我都用灰色背景和粉紅色字體來表示,比如在下邊的例子中,thread 1的最大歸檔日誌號為33,thread 2的最大歸檔日誌號為43是需要特別關註的地方;而命令一般使用黃色背景和紅色字體標註;對代碼或代碼輸出部分的註釋一般採用藍色字體表示。
List of Archived Logs in backup set 11 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- ------------------- ---------- --------- 1 32 1621589 2015-05-29 11:09:52 1625242 2015-05-29 11:15:48 1 33 1625242 2015-05-29 11:15:48 1625293 2015-05-29 11:15:58 2 42 1613951 2015-05-29 10:41:18 1625245 2015-05-29 11:15:49 2 43 1625245 2015-05-29 11:15:49 1625253 2015-05-29 11:15:53 [ZHLHRDB1:root]:/>lsvg -o T_XLHRD_APP1_vg rootvg [ZHLHRDB1:root]:/> 00:27:22 SQL> alter tablespace idxtbs read write; ====》2097152*512/1024/1024/1024=1G |
本文如有錯誤或不完善的地方請大家多多指正,ITPUB留言或QQ皆可,您的批評指正是我寫作的最大動力。
2.2 相關文章鏈接
http://blog.itpub.net/26736162/viewspace-1688209/ |
|
2.3 本文簡介
最近因為360雲盤停止個人用戶服務的事情要忙,所以等待事件系列就不更新了,轉而更新函數系列吧,畢竟函數比較簡單嘛。
本篇文章為第一篇,講解所有的字元函數。
先來一道考題:
Which four are types of functions available in SQL? (Choose 4)
A. string
B. character
C. integer
D. calendar
E. numeric
F. translation
G. date
H. conversion
Answer: B,E,G,H
3 字元函數
字元函數是 oracle 中最常用的函數,我們來看看有哪些字元函數:
(一)大小寫控制函數
l lower(char):將字元串全部轉化為小寫的格式。
l upper(char):將字元串全部轉化為大寫的格式。
l initcap('SQL course') 每個單詞的首字母大寫,其餘變為小寫,結果:Sql Course,
(二)字元控制函數
l concat('Hello','World') 字元串連接,結果:HelloWorld
l length(char):返回字元串的長度。
l substr(char,m,n):取字元串的子串,m表示起點,n 代表取 n 個字元的意思
l replace(char1,search_string,replace_string) 替換
l instr(char1,char2,[,n[,m]]) 取子串在字元串的位置(特別取某一個特殊字元在原字元串中的位置)
l trim(' Hello World '), 結果為: “Hello World”
l ltrim(' Hello World '),結果為: “Hello World ”
l rtrim(' Hello World '),結果為: “ Hello World”
l lpad(salary,10,'*') 結果:*****24000
l rpad(salary, 10, '*') 結果:24000*****
l chr()函數將ASCII碼轉換為字元: ASCII碼 –》 字元;
l ascii()函數將字元轉換為ASCII碼:字元 –》 ASCII碼;
3.0.1 lower: 將字元串全部轉化為小寫的格式
SQL> select lower('Hello WORLD') from dual;
LOWER('HELL ----------- hello world
SQL> Select ENAME,LOWER(ENAME) From SCOTT.EMP;
ENAME LOWER(ENAM ---------- ---------- SMITH smith ALLEN allen WARD ward JONES jones MARTIN martin BLAKE blake CLARK clark SCOTT scott KING king TURNER turner ADAMS adams JAMES james FORD ford MILLER miller |
3.0.2 upper: 將字元串全部轉化為大寫的格式
經常用於比較字元串的內容:
SQL> select upper('Hello WORLD') from dual;
UPPER('HELL ----------- HELLO WORLD
SQL> select ename,sal,hiredate from scott.emp where lower(ename) = 'ward';
ENAME SAL HIREDATE ---------- ---------- ------------------- WARD 1250 1981-02-22 00:00:00 |
3.0.3 initcap:每個字元串的首字母大寫,其餘變為小寫
select initcap('SQL coURse ') from dual;
結果:
3.0.4 concat:連接兩個不同的列,concat只能接受兩個參數
SQL> Select CONCAT(EMPNO,ENAME) From SCOTT.EMP;
CONCAT(EMPNO,ENAME) -------------------------------------------------- 7369SMITH 7499ALLEN 7521WARD 7566JONES 7654MARTIN 7698BLAKE 7782CLARK 7788SCOTT 7839KING 7844TURNER 7876ADAMS 7900JAMES 7902FORD 7934MILLER
14 rows selected.
SQL> Select CONCAT('A','B') From dual;
CO -- AB
SQL> select concat(concat('A','B'),'c') from dual;--可以嵌套使用
CON --- ABc |
可以使用連字元 || 來連接多列:
SELECT 'A'||'B'