日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL语言(6)

發布時間:2025/3/20 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL语言(6) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL語言(6)

1.to_number字符串到數字轉換

to_number(‘arg1’,’fmt’):將字符串轉換為數值型的格式;帶格式好樣式fmt。
Arg1:字符串格式;需要轉型的數據;
Fmt:轉換格式;

將\34,346.56轉換為數字類型;Select to_number(‘\34,346.56’,’L999,999.00’) from dual;

2.to_date字符到日期轉換

to_date(‘arg1’,’fmt’):將字符串轉換為日期格式。帶格式化樣式fmt;
Arg1:字符串類型;需要轉換的數據;
Fmt:轉換格式;

將2019年3月9日11點30分轉換為date類型;
Select to_date(‘2019年3月9日 11點30分’,’yyyy”年”mm”月”dd”日” hh”點”mi”分”’) from dual;

3.函數嵌套

?單行函數能夠被嵌套任意層次;
?嵌套函數的計算是從最里層到最外層;

(以hr用戶中的employees為例)

顯示受雇日期6個月后的下一個星期五的日期。結果日期將應該是:星期,月,日,年。使用Next 6 Month Review作為列別名。結果按受雇日期排序;
Select to_char(next_day(add_months(hire_date,6),’金曜日’),’day,mm,dd,yyyy’) “next 6 Month Review” from employees order by hire_date;

4.通用函數

可用于任意數據類型,并且適用于空值;
?Nvl(expr1,expr2)
?Nvl2(expr1,expr2,expr3)
?Nullif(expr1,expr2)
?Coalesce(expr1,expr2,…,exprn)

5.Nvl(expr1,expr2)函數

轉換一個空值到一個實際的值。
Expr1,expr2:可用的數據類型可以是日期、字符和數字。兩個參數的數據類型必須匹 配。
Expr1:是包含控制的原值或者表達式;
Expr2:適用于轉換控制的目的值;
(以hr用戶中的employees為例)

一、計算所有員工的年薪,如果有傭金包含傭金;
Select last_name,salary,commission_pct,salary12+salary12*nvl(commission_pct,0) from employees;

二、計算雇員的年報酬,你需要用12乘以月薪,再加上年薪乘以傭金百分比。顯示雇 員的名字、薪水、傭金和計算完后的薪水,新的薪水列名為AN_SAL;
Select last_name,salary,commission_pct,salary12+salary12*nvl(commission,0) “AN_SAL” from employees;

6.Nvl2(expr1,expr2,expr3)

檢查第一個表達式,如果第一個表達式不為空,那么返回第二個表達式;如果第一個表 達式為空返回第三個表達式; Expr1:是可能包含空值的原值或表達式; Expr2:expr1非空時返回值; Expr3:expr1為空時返回值;

(以hr用戶中的employees為例)

查詢雇員信息,如果有傭金的顯示SAL_COMM如果沒有傭金則顯示SAL;Select last_name,salary,commission_pct,nvl2(to_char(commission_pct),’SAL_COMM’,’SAL’) from employees;

7.Nullif(expr1,expr2)

比較兩個表達式,如果相等,函數返回空,如果不相等,函數返回第一個表達式;第一 個表達式不能為空;
如果expr1于expr2不相等返回expr1;
(以hr用戶中的employees為例)

查詢雇員,顯示他們的first_name與長度,長度列命名為expr1。Last_name與長度,長 度命名為expr2;判斷他們的長度,如果長度相同返回空,否則返回first_name的長度, 判斷結果列命名為result;
Select first_name,length(first_name) expr1,last_name,length(last_name) expr2,nullif(length(first_name),length(last_name)) result from employees;

8.Coalesce(expr1,expr2,…,exprn)

返回列表中第一個非空表達式;
如果Expr1非空,返回該表達式;如果expr1為空返回expr2;如果前面的表達式都為 空返回exprn;
(以hr用戶中的employees為例)

查詢雇員表,如果有傭金,顯示傭金值。如果沒有傭金,顯示工資。如果工資與傭金都 沒有顯示10;
Select last_name,coalesce(commission_pct,salary,10) from employees;

9.條件表達式

在SQL語句中提供if-then-else 邏輯的使用
?Case 表達式;
?Decode 函數;

10.Case表達式

如果沒有when…then滿足條件,并且else子句存在,Oracle返回else_expr,否則返 回null。所有表達式必須是相同的數據類型;
(以hr用戶中的employees為例)

查詢雇員,顯示 last_name,job_id,salary 如果 JOB_ID 是 IT_PROG,薪水增加 10%;如 果JOB_ID 是 ST_CLERK,薪水增加 15%;如果 JOB_ID 是 SA_REP,薪水增加 20%。對 于所有其他的工作角色,不增加薪水。
?有else的情況
Select last_name,job_id,salary,case job_id WHEN ‘IT_PROG’ THEN salary1.1 WHEN ‘ST_CLERK’ THEN salary1.15 WHEN ‘SA_REP’ THEN salary1.2 else salary end from employees;
?沒有else的情況
Select last_name,job_id,salary,case job_id WHEN ‘IT_PROG’ THEN salary1.1 WHEN ‘ST_CLERK’ THEN salary1.15 WHEN ‘SA_REP’ THEN salary1.2 end from employees;

11.decode函數

在比較表達式和每個查詢值后,如果表達式與查找相同,返回結果。如果省略默認值, 當沒有查找值與表達式相匹配是返回空值;
(以hr用戶中的employees為例)

使用 DECODE 函數完成(顯示 last_name,job_id,salary 如果 JOB_ID 是 IT_PROG,薪水
增加 10%;如果 JOB_ID 是 ST_CLERK,薪水增加 15%;如果 JOB_ID 是 SA_REP,
薪水增加 20%。對于所有其他的工作角色,不增加薪水。)
?有末尾值的情況;
Select last_name,job_id,salary decode(job_id,’IT_PROG’,salary1,1,’ST_CLERK’,salary1.15,’SA_REP’,salary1,2,salary) from employees;
?沒有末尾值的情況;
Select last_name,job_id,salary decode(job_id,’IT_PROG’,salary1,1,’ST_CLERK’,salary1.15,’SA_REP’,salary1,2) from employees;

總結

以上是生活随笔為你收集整理的SQL语言(6)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。