91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL 基礎之轉換函數和條件表達式(八)

發布時間:2020-07-01 08:18:08 來源:網絡 閱讀:637 作者:yuri_cto 欄目:數據庫

數據類型轉換分為:

  • 隱式數據類型轉換

  • 顯示數據類型轉換


隱式數據類型轉換:

在表達式中,Oracle服務器自動完成下列轉換

FromTo 
VARCHAR2 or CHARNUMBER
VARCHAR2 or CHARDATE 
NUMBERVARCHAR2 or CHAR
DATEVARCHAR2 or CHAR


顯示數據類型轉換

SQL 基礎之轉換函數和條件表達式(八)

1、使用 TO_CHAR  函數對日期的轉換

格式:TO_CHAR (date, 'format_model')

  • 必須包含在單引號中

  • 大小寫敏感。

  • 可以包含任意的有效的日期格式。

  • 可以使用 fm 去掉多余的空格或者前導零。

  • 與日期值用逗號隔開。


日期格式的組成

元素結果
YYYY完整的年份
YEAR年(英文) 
MM雙位數字月份 
MONTH完整的月份名稱
MON月份的三個字母縮寫
DY星期的三個字母的縮寫
DAY完整的星期名稱
DD月份的數字天

SQL 基礎之轉換函數和條件表達式(八)

1、查找員工入職日期,并按照 日 月 年方式顯示

select last_name,to_char(hire_date,'fmDD Month YYYY') as hiredate from employees;

SQL 基礎之轉換函數和條件表達式(八)

2、查詢員工入職日期,按照英文的星期、月份、英文年數

select last_name,to_char(hire_date,'fmDAY Month YEAR') as hiredate from employees;

SQL 基礎之轉換函數和條件表達式(八)

3、查詢員工入職日期,按照數字 日、月、年方式

select last_name,to_char(hire_date,'fmDD MM YYYY') as hiredate from employees;

SQL 基礎之轉換函數和條件表達式(八)

4、查詢員工入職日期,按照年、月、日方式

select last_name,to_char(hire_date,'YYYY,MM,fmDD') as hiredate from employees;

SQL 基礎之轉換函數和條件表達式(八)


5、創建一張報表,現在員工入職日期當天為周六,并顯示FIRST_NAME和LAST_NAME列的信息和一個表達式,這個表達式的別名為START_DATE。

select first_name,last_name,to_char(hire_date,'fmDAY Month YYYY') start_date from employees where to_char(hire_date,'fmDAY')='SATURDAY';

SQL 基礎之轉換函數和條件表達式(八)


也可以這樣顯示

select first_name,last_name,to_char(hire_date,'fmDAY,"the "ddth "of"  Month, Yyyysp.') start_date from employees where to_char(hire_date,'fmDAY')='SATURDAY';

SQL 基礎之轉換函數和條件表達式(八)


使用 TO_CHAR 函數對數字的轉換

元素結果
9代表一個數字
0強制顯示0
$放置一個浮動的美元符號
L采用浮動本地貨幣符號
.打印小數點
,打印一個逗號作為千位標示符


1、查找名字為Ernst 員工的工資,并按$99,999.0的格式輸出

select  salary,to_char(salary,'$99,999.00') salary from employees where last_name='Ernst';

SQL 基礎之轉換函數和條件表達式(八)



2、查找名字為Zlotkey 員工的工資,并按照的$99,999.0的格式輸出

select salary,to_char(salary,'L0,0000.000') salary from employees where last_name='Zlotkey';

SQL 基礎之轉換函數和條件表達式(八)



使用 TO_NUMBER 和 和 TO_DATE 函數


使用 TO_NUMBER 函數將字符轉換為數字格式:

TO_NUMBER(char[, 'format_model'])


使用 TO_DATE 函數將字符串轉換為日期格式:

TO_DATE(char[, 'format_model'])

這個函數有一個fx 修飾符, 這個修飾符指定TO_DATE 中字符參數和格式精確匹配.


使用RR日期格式,在員工表中查找1990年之前入職的員工,在1999年執行查詢或者現在執行,產生的結果是否相同


1、查找05年1月1號以后入職的員工

select last_name,to_char(hire_date,'DD-Mon-YYYY') from employees where hire_date > to_date('01-Jan-05','DD-Mon-RR');

SQL 基礎之轉換函數和條件表達式(八)


嵌套函數

  • 單行函數可以嵌套到任意層級

  • 嵌套函數的執行順序是由內到外


1、查找60部門的員工last_name  并將名字變成大寫,與US拼接在一起

select last_name,upper(concat(substr(last_name,1,8),'_US')) con_last_name from employees where department_id=60;

SQL 基礎之轉換函數和條件表達式(八)


通用函數:這些函數適用于任何數據類型,同時也適用于空值:

NVL (expr1, expr2) : 如果expr1位空,則返回expr2

NVL2 (expr1, expr2, expr3) : 如果參數表達式expr1值為NULL,則NVL2()函數返回參數表達式expr3的值;如果參數表達式expr1值不為NULL,則NVL2()函數返回參數表達式expr2的值。

NULLIF (expr1, expr2) : 如果兩個指定的表達式相等,則返回空值。不相等返回expr1

COALESCE (expr1, expr2, ..., exprn):依次參考各參數表達式,遇到非null值即停止并返回該值。如果所有的表達式都是空值,最終將返回一個空值


NVL  函數

將空值轉換成一個已知的值:

可以使用的數據類型有數字、日期、字符。

數據類型必須匹配:

– NVL(commission_pct,0)

– NVL(hire_date,'01-JAN-97')

– NVL(job_id,'No Job Yet')


1、計算員工年薪,按照last_name, 提成,和12*salary 顯示

select last_name,salary,nvl(commission_pct,0) comm,(salary*12) +(salary*12*NVL(commission_pct,0)) AN_SAL from employees;

SQL 基礎之轉換函數和條件表達式(八)


2、查詢50和80部門員工的工資并現在三段字符如果commission_pct 為空就顯示SAL,如果不為空就顯示SAL+COMM

select last_name,salary,commission_pct, nvl2(commission_pct, 'SAL+COMM', 'SAL') income from employees where department_id in (50,60);

SQL 基礎之轉換函數和條件表達式(八)


3、查找既沒有提成也沒有領導id的員工,按照last_name、employee_id顯示

select last_name,employee_id,coalesce(to_char(commission_pct),to_char(manager_id),'No commission and no manager') from employees;

SQL 基礎之轉換函數和條件表達式(八)

4、創建一張報表,要求檢索EMPLOYEES表中DEPARTMENT_ID為100的行集合。這個集合包含

FIRST_NAME和LAST_NAME,以及別名為NAME_LENGTHS的表達式。如果FIRST_NAME和

LAST_NAME長度不相等,該表達式返回字符串‘Different Length’,否則返回字符串為‘Same

Length’


select last_name,first_name,nvl2(nullif(length(last_name),length(first_name)),'Different Length','Same Length') name_lengths from employees  where department_id=100;

SQL 基礎之轉換函數和條件表達式(八)




條件表達式

在 SQL語句中使用 IF-THEN-ELSE 邏輯。

使用兩種方法:

– CASE 表達式

– DECODE 函數


CASE expr WHEN comparison_expr1 THEN return_expr1

[WHEN comparison_expr2 THEN return_expr2

WHEN comparison_exprn THEN return_exprn

ELSE else_expr]

END


使用case表達式,實現IF-THEN-ELSE 的示例:

1、把job_id 為it_prog、st_clerk、sa_rep等職位的員工分別按照1.1/1.15/1.2的比例漲工資,除了這3個部門以外的職位都按照正常的顯示。

select last_name, job_id, salary,

case job_id when 'it_prog' then 1.10*salary

when 'st_clerk' then 1.15*salary

when 'sa_rep' then 1.20*salary

else salary end "revised_salary"

from employees;


LAST_NAME  JOB_ID SALARY revised_salary

------------------------- ---------- ---------- --------------

OConnell  SH_CLERK   2600  2600

Grant  SH_CLERK   2600  2600

Whalen  AD_ASST   4400  4400

Hartstein  MK_MAN  13000 13000

Fay  MK_REP   6000  6000

Mavris  HR_REP   6500  6500

Baer  PR_REP  10000 10000

Higgins  AC_MGR  12008 12008

Gietz  AC_ACCOUNT   8300  8300

King  AD_PRES  24000 24000

Kochhar  AD_VP  17000 17000

De Haan  AD_VP  17000 17000

Hunold  IT_PROG   9000  9000

Ernst  IT_PROG   6000  6000

Austin  IT_PROG   4800  4800

Pataballa  IT_PROG   4800  4800

Lorentz  IT_PROG   4200  4200

Greenberg  FI_MGR  12008 12008

Faviet  FI_ACCOUNT   9000  9000

Chen  FI_ACCOUNT   8200  8200

Sciarra  FI_ACCOUNT   7700  7700

Urman  FI_ACCOUNT   7800  7800

Popp  FI_ACCOUNT   6900  6900

Raphaely  PU_MAN  11000 11000

Khoo  PU_CLERK   3100  3100

Baida  PU_CLERK   2900  2900

Tobias  PU_CLERK   2800  2800

Himuro  PU_CLERK   2600  2600

Colmenares  PU_CLERK   2500  2500

Weiss  ST_MAN   8000  8000

Fripp  ST_MAN   8200  8200

Kaufling  ST_MAN   7900  7900

Vollman  ST_MAN   6500  6500

Mourgos  ST_MAN   5800  5800

Nayer  ST_CLERK   3200  3200

Mikkilineni  ST_CLERK   2700  2700

Landry  ST_CLERK   2400  2400

Markle  ST_CLERK   2200  2200

Bissot  ST_CLERK   3300  3300

Atkinson  ST_CLERK   2800  2800

Marlow  ST_CLERK   2500  2500

Olson  ST_CLERK   2100  2100

Mallin  ST_CLERK   3300  3300

Rogers  ST_CLERK   2900  2900

Gee  ST_CLERK   2400  2400

Philtanker  ST_CLERK   2200  2200

Ladwig  ST_CLERK   3600  3600

Stiles  ST_CLERK   3200  3200

Seo  ST_CLERK   2700  2700

Patel  ST_CLERK   2500  2500

Rajs  ST_CLERK   3500  3500

Davies  ST_CLERK   3100  3100

Matos  ST_CLERK   2600  2600

Vargas  ST_CLERK   2500  2500

Russell  SA_MAN  14000 14000

Partners  SA_MAN  13500 13500

Errazuriz  SA_MAN  12000 12000

Cambrault  SA_MAN  11000 11000

Zlotkey  SA_MAN  10500 10500

Tucker  SA_REP  10000 10000

Bernstein  SA_REP   9500  9500

Hall  SA_REP   9000  9000

Olsen  SA_REP   8000  8000

Cambrault  SA_REP   7500  7500

Tuvault  SA_REP   7000  7000

King  SA_REP  10000 10000

Sully  SA_REP   9500  9500

McEwen  SA_REP   9000  9000

Smith  SA_REP   8000  8000

Doran  SA_REP   7500  7500

Sewall  SA_REP   7000  7000

Vishney  SA_REP  10500 10500

Greene  SA_REP   9500  9500

Marvins  SA_REP   7200  7200

Lee  SA_REP   6800  6800

Ande  SA_REP   6400  6400

Banda  SA_REP   6200  6200

Ozer  SA_REP  11500 11500

Bloom  SA_REP  10000 10000

Fox  SA_REP   9600  9600

Smith  SA_REP   7400  7400

Bates  SA_REP   7300  7300

Kumar  SA_REP   6100  6100

Abel  SA_REP  11000 11000

Hutton  SA_REP   8800  8800

Taylor  SA_REP   8600  8600

Livingston  SA_REP   8400  8400

Grant  SA_REP   7000  7000

Johnson  SA_REP   6200  6200

Taylor  SH_CLERK   3200  3200

Fleaur  SH_CLERK   3100  3100

Sullivan  SH_CLERK   2500  2500

Geoni  SH_CLERK   2800  2800

Sarchand  SH_CLERK   4200  4200

Bull  SH_CLERK   4100  4100

Dellinger  SH_CLERK   3400  3400

Cabrio  SH_CLERK   3000  3000

Chung  SH_CLERK   3800  3800

Dilly  SH_CLERK   3600  3600

Gates  SH_CLERK   2900  2900

Perkins  SH_CLERK   2500  2500

Bell  SH_CLERK   4000  4000

Everett  SH_CLERK   3900  3900

McCain  SH_CLERK   3200  3200

Jones  SH_CLERK   2800  2800

Walsh  SH_CLERK   3100  3100

Feeney  SH_CLERK   3000  3000


107 rows selected.


DECODE  函數

在需要使用 IF-THEN-ELSE 邏輯時:

DECODE(col|expression, search2, result1

[, search3, result2,...,]

[, default])


同上面的例子一樣還是it_prog、st_clerk、sa_rep 三個職位的員工相應的漲錢,其它職位按照默認計算

select last_name, job_id, salary,

decode(job_id, 'it_prog', 1.10*salary,

'st_clerk', 1.15*salary,

'sa_rep', 1.20*salary,

salary)

revised_salary

from employees;


LAST_NAME  JOB_ID    SALARY     REVISED_SALARY

------------------------- ---------- ---------- --------------

OConnell      SH_CLERK        2600        2600

Grant     SH_CLERK       2600        2600

Whalen     AD_ASST       4400       4400

Hartstein    MK_MAN      13000     13000

Fay    MK_REP        6000      6000

Mavris            HR_REP       6500       6500

Baer      PR_REP     10000     10000

Higgins       AC_MGR     12008     12008

Gietz AC_ACCOUNT      8300          8300

King  AD_PRES  24000 24000

Kochhar  AD_VP  17000 17000

De Haan  AD_VP  17000 17000

Hunold  IT_PROG   9000  9000

Ernst  IT_PROG   6000  6000

Austin  IT_PROG   4800  4800

Pataballa  IT_PROG   4800  4800

Lorentz  IT_PROG   4200  4200

Greenberg  FI_MGR  12008 12008

Faviet  FI_ACCOUNT   9000  9000

Chen  FI_ACCOUNT   8200  8200

Sciarra  FI_ACCOUNT   7700  7700

Urman  FI_ACCOUNT   7800  7800

Popp  FI_ACCOUNT   6900  6900

Raphaely  PU_MAN  11000 11000

Khoo  PU_CLERK   3100  3100

Baida  PU_CLERK   2900  2900

Tobias  PU_CLERK   2800  2800

Himuro  PU_CLERK   2600  2600

Colmenares  PU_CLERK   2500  2500

Weiss  ST_MAN   8000  8000

Fripp  ST_MAN   8200  8200

Kaufling  ST_MAN   7900  7900

Vollman  ST_MAN   6500  6500

Mourgos  ST_MAN   5800  5800

Nayer  ST_CLERK   3200  3200

Mikkilineni  ST_CLERK   2700  2700

Landry  ST_CLERK   2400  2400

Markle  ST_CLERK   2200  2200

Bissot  ST_CLERK   3300  3300

Atkinson  ST_CLERK   2800  2800

Marlow  ST_CLERK   2500  2500

Olson  ST_CLERK   2100  2100

Mallin  ST_CLERK   3300  3300

Rogers  ST_CLERK   2900  2900

Gee  ST_CLERK   2400  2400

Philtanker  ST_CLERK   2200  2200

Ladwig  ST_CLERK   3600  3600

Stiles  ST_CLERK   3200  3200

Seo  ST_CLERK   2700  2700

Patel  ST_CLERK   2500  2500

Rajs  ST_CLERK   3500  3500

Davies  ST_CLERK   3100  3100

Matos  ST_CLERK   2600  2600

Vargas  ST_CLERK   2500  2500

Russell  SA_MAN  14000 14000

Partners  SA_MAN  13500 13500

Errazuriz  SA_MAN  12000 12000

Cambrault  SA_MAN  11000 11000

Zlotkey  SA_MAN  10500 10500

Tucker  SA_REP  10000 10000

Bernstein  SA_REP   9500  9500

Hall  SA_REP   9000  9000

Olsen  SA_REP   8000  8000

Cambrault  SA_REP   7500  7500

Tuvault  SA_REP   7000  7000

King  SA_REP  10000 10000

Sully  SA_REP   9500  9500

McEwen  SA_REP   9000  9000

Smith  SA_REP   8000  8000

Doran  SA_REP   7500  7500

Sewall  SA_REP   7000  7000

Vishney  SA_REP  10500 10500

Greene  SA_REP   9500  9500

Marvins  SA_REP   7200  7200

Lee  SA_REP   6800  6800

Ande  SA_REP   6400  6400

Banda  SA_REP   6200  6200

Ozer  SA_REP  11500 11500

Bloom  SA_REP  10000 10000

Fox  SA_REP   9600  9600

Smith  SA_REP   7400  7400

Bates  SA_REP   7300  7300

Kumar  SA_REP   6100  6100

Abel  SA_REP  11000 11000

Hutton  SA_REP   8800  8800

Taylor  SA_REP   8600  8600

Livingston  SA_REP   8400  8400

Grant  SA_REP   7000  7000

Johnson  SA_REP   6200  6200

Taylor  SH_CLERK   3200  3200

Fleaur  SH_CLERK   3100  3100

Sullivan  SH_CLERK   2500  2500

Geoni  SH_CLERK   2800  2800

Sarchand  SH_CLERK   4200  4200

Bull  SH_CLERK   4100  4100

Dellinger  SH_CLERK   3400  3400

Cabrio  SH_CLERK   3000  3000

Chung  SH_CLERK   3800  3800

Dilly  SH_CLERK   3600  3600

Gates  SH_CLERK   2900  2900

Perkins  SH_CLERK   2500  2500

Bell  SH_CLERK   4000  4000

Everett  SH_CLERK   3900  3900

McCain  SH_CLERK   3200  3200

Jones  SH_CLERK   2800  2800

Walsh  SH_CLERK   3100  3100

Feeney  SH_CLERK   3000  3000


107 rows selected.


2、顯示部門為80的每一位員工,適用的稅率為:

表示如果截取之為0稅率為0,1稅率為0.09  2稅率為0.2 后面以此類推

select last_name, salary,

decode (trunc(salary/2000, 0),

0, 0.00,

1, 0.09,

2, 0.20,

3, 0.30,

4, 0.40,

5, 0.42,

6, 0.44,

0.45) tax_rate

from employees

where department_id = 80;


LAST_NAME      SALARY   TAX_RATE

------------------------- ---------- ----------

Russell       14000    .45

Partners       13500    .44

Errazuriz       12000    .44

Cambrault       11000    .42

Zlotkey       10500    .42

Tucker       10000    .42

Bernstein9500     .4

Hall9000     .4

Olsen8000     .4

Cambrault7500     .3

Tuvault 7000     .3

King       10000    .42

Sully9500     .4

McEwen9000     .4

Smith8000     .4

Doran7500     .3

Sewall7000     .3

Vishney       10500    .42

Greene9500     .4

Marvins 7200     .3

Lee6800     .3

Ande6400     .3

Banda6200     .3

Ozer       11500    .42

Bloom       10000    .42

Fox9600     .4

Smith7400     .3

Bates7300     .3

Kumar6100     .3

Abel       11000    .42

Hutton8800     .4

Taylor8600     .4

Livingston8400     .4

Johnson 6200     .3


34 rows selected.


3、查詢LOCALTIONS表中的行,這些行的COUNTRY_ID列的值為US,請使用別名為LOCALTION_INFO

的表達式來計算STATE_PROVINCE列值,并返回不同的信息。結果如下圖:

STATE_PROVINCE返回值
Washington字符串’Headquarters’
Texas 字符串’Oil Wells’
CaliforniaCITY值
New JerseySTREET _ADDRESS列值

select decode(state_province,'Washington','Headquarters','Texas','Oil Wells','California',city,'New Jersey',

street_address) location_info,state_province,city,street_address,country_id from locations where country_id='US';

SQL 基礎之轉換函數和條件表達式(八)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

承德县| 如皋市| 电白县| 于都县| 景洪市| 邢台县| 红河县| 新丰县| 浮山县| 昭通市| 凤庆县| 双城市| 克拉玛依市| 卓尼县| 全南县| 岐山县| 西华县| 安康市| 廉江市| 华池县| 肥乡县| 焦作市| 南岸区| 临城县| 马边| 明水县| 百色市| 澎湖县| 富裕县| 绍兴县| 禹州市| 东宁县| 青冈县| 卓尼县| 延津县| 江西省| 巴彦县| 楚雄市| 南康市| 萨嘎县| 潢川县|