SQL语言(4)
SQL語言(4)
一.Oracle函數
1.什么是函數
是數據庫產品中提供的能夠處理查詢結果的方法;
2.函數的作用:
?執行數據計算;
?修改單個數據項;
?格式化顯示的日期和數字;
?轉換數據類型;
?函數有輸入參數,并且總有一個返回值;
3.函數類型
?單行函數:這些函數僅對單個行進行運算,并且每行返回一個結果;
?多行函數(聚合函數):這些函數能夠操縱成組的行,每個行組給出一個結果,這些函數也被稱為組函數;
4.函數語法
Function_name(arg1,arg2,…)
Function_name:是函數的名字;
arg1,arg2:是由函數使用的任意參數。參數可以是一個列名、用戶提供的常數、 變量值、或者一個表達式;
5.單行函數
單行函數的特性包括:
?作用于每一個返回行,每行返回一個結果;
?可能需要一個或者多個參數;
?可以修改結果集的數據類型;
?可以嵌套;
?可能返回一個與參數不同類型的數據值;
?能夠用在select、where和order by 子句中;
單行函數分類:
?字符函數:接收字符輸入,可以返回字符或者數字值;
?數字函數:接收數字輸入,返回數字值;
?日期函數:對DATE數據類型的值進行運算(除了months_between函數返回一個數字,所有日期函數都返回一個date數據類型的值);
?轉換函數:從一個數據類型到另一個數據類型轉的一個值;
?通用函數:nvl、nvl2、nullif、coalsece、case、decode;
6.字符函數
單行字符函數接收字符數據作為輸入,既可以返回字符值也可以返回數字值;
字符函數分類
?大小寫處理函數;
?字符處理函數;
7.大小寫處理函數
Lower:轉換大小寫混合的字符串為小寫字符串;
Upper:轉換大小寫混合的字符串為大寫字符串;
Initcap:將每個單詞的首字母轉化為大寫,其他字母為小寫。
大小寫處理函數需要一個參數,參數類型為字符串類型,返回一個字符串;
(以hr用戶中的employees為例)
例:
1.查詢員工表,使用“ The Job id for ”鏈接轉換大寫格式后的員工姓名,并使用 “ is ”字符串鏈接他們工作ID,要求將工作ID轉換小寫格式。修改列名為 “EMPLOYEE DETAILS”;
1.Select ‘ The Job id for ’ || upper(last_name) || ‘ is ’ || lower(job_id) “EMPLOYEE DETAILS” from employees;
2.顯示雇員 higgins 的雇員號、姓名和部門號;
2.select employee_id,last_name,department_id from employees where last_name = initcap(‘higgins’);
8.字符串處理函數
Dual表:一張只有過一個字段,一行記錄的表。Dual表也成為“偽表”因為他不 存儲主題數據。如果不需要從具體的表來取得表中數據,而是單純的為了得到一些 想要的信息,并要通過select完成是,就要借助dual表來滿足結構查詢語言的格 式;
9.Concat(arg1,arg2)
:連接值在一起;
Arg1:字符串類型、字符拼接的值。
Arg2:同上;
10.Substr(arg1,arg2,arg3)
:截取子串;
截取的順序永遠是從左向右截取,不論前面是位置中的是
正數還是負數,都是從選擇的位置向右截取;
Arg1:字符串類型;源字符串;
Arg2:整數類型,開始位置(開始位置可以是一個整數,-1表示原串的最后一位, -2表示倒數第二位以此類推)。
Arg3:整數類型。截取個數。
11.Substr(arg1,arg2)
:截取子串。
Arg1:字符串類型原字符串;
Arg2:開始位置(開始位置可以是一個負數,-1表示原串的最后一位,-2表示倒數 第二位以此類推)截取到末尾;
12.Length(arg1)
:以數字值顯示一個字符串的長度;
Arg1:字符串類型。計算長度的字符串;
13.Instr(arg1,arg2)
:找到一個給定字符的數字位置;
Arg1:字符串類型。原字符串;
Arg2:字符串類型。查找內容;
14.Instr(arg1,arg2,arg3,arg4)
:指定查找位置以及出現的次數。
Arg1:字符串類型,原字符串。
Arg2:字符串類型,查找內容;
Arg3:整數類型,查找位置;
Arg4:整數類型,第幾次出現;
15.Lpad(arg1,arg2,arg3)
:用給定的字符左填充字符串給定的長度;
Arg1:字符串類型;原字符串;
Arg2:整數類型;總長度;
Arg3:字符串類型,充填的字符串;
16.Rpad(arg1,arg2,arg3)
:用給定的字符右填充字符串給定的長度;
Arg1:字符串類型;原字符串;
Arg2:整數類型;總長度;
Arg3:字符串類型,充填的字符串;
17.Trim(arg1)
:從一個字符串中除去(leading)或尾(trailing)或頭尾兩側(both)的 字符(默認為頭尾兩側)如果除去的是一個字符或者文字必須放在單引號中;
Arg1:需要操作的字符串。From為關鍵字;
格式1:需要去掉的內容from原字符串;
格式2:leading|trailing|both需要去掉的內容from原字符串。
例
:
去掉頭尾兩側:
Select trim(‘h’ from ‘helloh’) from dual;
Select trim(both ‘h’ from ‘helloh’) from dual;
只去掉頭:
Select trim(leading ‘h’ from ‘helloh’) from dual;
只去掉尾:
Select trim(trailing ‘h’ from ‘helloh’) from dual;
18.replace(arg1,arg2,arg3)
:replace函數是用另外一個值來替代串中的某個值。
Arg1:字符串類型,原字符串;
Arg2:字符串類型,需要替換的子串;
Arg3:字符串類型,替換的內容;
(以hr用戶中的employees為例)
例
:1.顯示所有工作崗位名稱從第4個字符位置開始包含字符串REP的雇員的信息,將 雇員的姓和名連接顯示在一起,還顯示員工名的長度,以及名字中字母a的位置。
Select concat(first_name,last_name),length(last_name),instr(last_name,’a’) from employees where substr(job_id,4) = ’REP’;
2.顯示名字是以n結束的雇員的數據,將雇員的姓和名連接顯示在一起,還顯示雇 員名的長度,以及名字中字母a的位置;
Select concat(first_name,last_name),length(last_name),instr(last_name,’a’) from employees where substr(last_name,-1) = ‘n’;
3.將手機號中間四位用星號代替。
Select replace(‘13846001292’,substr(‘13846001292’,4,4),’****’) from dual;
總結