使用轉換函式和條件表示式

2021-09-23 20:45:55 字數 3748 閱讀 7827

資料型別轉換包括:

隱式型別轉換-在後台轉換,與預設格式匹配。

從varchar或varchar2轉換為number或者date格式。或者上述兩種型別互相轉換。

和顯式資料型別轉換

上面是資料格式互相轉換的過程方法。

to_char函式對日期的轉換

資料庫預設的日期格式為dd-mm-rr,可以通過to_char函式轉換

to_char(date,『format_model』)

格式:必須在單引號中;大小寫敏感;可以包含任意有效的日期格式;可以使用fm去掉多與的前導0;與日期值用逗號隔開。

to_date函式將字串轉化為日期

to_date(char[,『format_model』])

to_number函式將字元轉化為數字格式

to_number(char[,『format_model』])

字元函式中的標點和引號必須與格式模型的相應部分完全匹配(大寫除外);

字元引數不能有額外的空格;

字元引數中的數字資料必須與格式模型中的相應元素具有相同的位數,

如果沒有前導0,字元引數中的數字可以省略前導0.

巢狀函式的執行順序是由內到外,從最裡層到最外層。可以巢狀到任意層級。

nvl:轉換null值為實際的值。

nvl(comm,0)將控制轉換為0.

nvl2:如果表示式1不是null,那麼轉換為表示式2;如果表示式1是null,則轉換為表示式3.

nvl2(expr1,expr2,expr3)

nullif:比較兩個表示式,如果相等,返回null;如果不相等,則返回第乙個表示式。

nullif函式比較兩個表示式返回null,如果不相等,返回第乙個表示式,第乙個表示式不能為null。

coalesce:返回表示式第乙個非空表示式。

coalesce與nvl相比的有點在於coalsce可以同時交替多個值。如果第乙個表示式非空,則返回表示式,對引數進行coalesce。

條件表示式(if-then-else)-case和decode

case:

sql> select ename , job , sal ,

2 case job when 'clerk' then 1.10*sal

3 when 'salesman' then 1.15*sal

4 when 'president' then 1.20*sal

5 when 'manager' then 1.25*sal

6 when 'analyst' then 1.30*sal

7 else sal end "revised_salary"

8 from emp;

ename job sal revised_salary

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

smith clerk 800 880

allen salesman 1600 1840

ward salesman 1250 1437.5

jones manager 2975 3718.75

martin salesman 1250 1437.5

blake manager 2850 3562.5

clark manager 2450 3062.5

scott analyst 3000 3900

king president 5000 6000

turner salesman 1500 1725

adams clerk 1100 1210

ename job sal revised_salary

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

james clerk 950 1045

ford analyst 3000 3900

miller clerk 1300 1430

14 rows selected.

decode:

sql> select ename , sal , job ,

2 decode (job , 'clerk', 1.10*sal,

3 'salesan', 1.15*sal,

4 'president', 1.2*sal,

5 'manager', 1.25*sal,

6 'analyst', 1.3*sal,

7 sal)

8 revised_salary

9 from emp;

ename sal job revised_salary

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

smith 800 clerk 880

allen 1600 salesman 1600

ward 1250 salesman 1250

jones 2975 manager 3718.75

martin 1250 salesman 1250

blake 2850 manager 3562.5

clark 2450 manager 3062.5

scott 3000 analyst 3900

king 5000 president 6000

turner 1500 salesman 1500

adams 1100 clerk 1210

ename sal job revised_salary

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

james 950 clerk 1045

ford 3000 analyst 3900

miller 1300 clerk 1430

14 rows selected.

轉換函式和表示式

2 通用函式 3 表示式函式 implicit 隱式 varchar2 or char number character number number varchar2 or char date varchar2 or charexplicit 顯式 to char number character ...

表示式和條件結構

計算順序 從右往左 double salary 3200.0 計算機是從右往左讀的 復合運算子 include using namespace std int main 關係運算子 include using namespace std int main 邏輯運算子 運算子表示式 說明 並且 條件1...

條件分支 CASE表示式和DECODE函式

case表示式單條件 單列 來走分支 看下面的加薪語句 sql select last name,job id,salary,2 case job id when it prog then 1.10 salary 3 when st clerk then 1.15 salary 4 when sa ...