1. 程式人生 > >mysql中的轉換函式(講義)

mysql中的轉換函式(講義)

--轉換函式:
    --to_number(數值型別的字元):將字元轉換為數值
    --to_char(數值或者是日期):將數值或者日期轉換為字元
    --to_date(日期格式的字元):將字元轉換為日期
----------------數值和字元的互轉-----------------------
--字元轉換為數字char---->number
    select to_number('123')+2  from dual
--數字轉換字元number--->char
    --指定顯示格式:
           --9表示位置佔位,例如999,999,999會將數字按照三個一組使用逗號隔開。
           --L表示人民幣符號,$表示美元符號
           --0可以進行佔位分組,但是如果真實資料位數不足,會使用0進行補位。
            select to_char(12345,'$999,999,999') from dual
            select to_char(12345,'L999,999,999') from dual
            select to_char(12345678,'000,000,000,000.000') from dual
    --查詢工資大於2000的員工資訊
            --數值和字元之間的轉換可以隱式轉換。to_number可以省略不寫.
            select * from emp where sal>'2000';
             select * from emp where sal>to_number('2000');
---------------日期和字元的互轉---------------------------
--一般使用方式:新增資料使用to_date(),查詢資料使用to_char()
--字元轉換為日期 char--->date
    --使用to_date('要轉換的字元',日期格式)函式將字元轉換為日期
         --注意1:字元必須符合日期格式
         --注意2:oralce預設的轉換格式為日月年,例如'01-1月-2018' oracle認為是一個日期
         --常用日期格式:
               --    yyyy-mm-dd
               --    yyyy/mm/dd
    --查詢員工入職日期在82年後的資訊
    select * from emp where hiredate >to_date('1982-01-01','yyyy-mm-dd')
    select * from emp where hiredate >to_date('1982/01/01','yyyy/mm/dd')      
    select * from emp where to_char(hiredate,'yyyy-mm-dd') >'1982-01-01'
--日期轉換為字元  date--->char
   --使用to_char('要轉換的日期',轉換格式)
   --注意1:如果不指名轉換格式,則使用預設格式,日月年例如:'01-1月-81'
   --常用轉換格式:
         -- yyyy-mm-dd
         -- yyyy/mm/dd
         --'yyyy"年"mm"月"dd"日"'
   select to_char(hiredate) from emp--使用預設格式將日期轉換為字元
   select to_char(hiredate,'yyyy-mm-dd') from emp--使用指定格式  yyyy-mm-dd
   select to_char(hiredate,'yyyy/mm/dd') from emp--使用指定格式 yyyy/mmm/dd
   select to_char(hiredate,'yyyy"年"mm"月"dd"日"') from emp--使用指定格式 'yyyy"年"mm"月"dd"日"'
----------------------------------------------------------------------------------------------------- 
--其他函式:
   --nvl():nvl(欄位名,新的值)
          --如果欄位值不為null,則返回該欄位的值。如果為null則返回新的值
   --nvl2():nvl2(欄位名,處理1,處理2)
          --如果欄位值不為null,則執行處理1,為null執行處理2
   --decode():decode(欄位名,值1,處理1,值2,處理2,值3,處理3,...,公共處理)
          --如果欄位的值和decode中的條件值相同則執行物件的處理。如果都沒有則執行公共處理
   ---查詢員工的工資資訊
   select ename,job,sal from emp
   --查詢員工的薪水資訊
   select ename,job,sal+nvl(comm,0),sal+comm,sal from emp
   select ename,job,nvl2(comm,sal+comm,sal) from emp
   --顯示員工的職稱
   select ename,job,decode(job,'MANAGER','經理','PRESIDENT','董事長','SALESMAN','銷售','普通員工') from emp