1、單行函數分類:一行記錄,傳回一行結果;
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAjM2EzLcd3LcJzLcJzdllmVldWYtl2Pn5GcuQzM0kzMjlDZhJWOycTY1YWNyQWNmRmMlFDN5cTOjFzYvwlN2UDO3QzNtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
四種轉換、三個函數:
2、to_char(date,‘fmt’):将一個date日期,轉換為’fmt’日期格式的字元串顯示。
1)常見的日期格式控制符
2)資料源如下
3)案例如下
① 查詢1987年入職的員工(姓名,入職日期)。
SQL> select ename,hiredate
2 from emp
3 where to_char(hiredate,'YYYY')='1987';
ENAME HIREDATE
---------- -----------
SCOTT 1987/4/19
ADAMS 1987/5/23
複制
② 查詢1981年2月入職的員工(姓名,入職日期)。
SQL> select ename,hiredate
2 from emp
3 where to_char(hiredate,'YYYY-mm')='1981-02';
ENAME HIREDATE
---------- -----------
ALLEN 1981/2/20
WARD 1981/2/22
複制
- 這裡需要注意的是,對于月份隻能是2個m,同時後面的篩選條件必須寫成’1981-02’,而不能是’1981-2’。
③ 傳回某個日期是哪一年、哪一月、哪一天、哪個季度。
-- 傳回日期中的年份
SQL> select to_char(sysdate,'yyyy') from dual;
TO_CHAR(SYSDATE,'YYYY')
-----------------------
2019
-- 傳回日期中的月份
SQL> select to_char(sysdate,'mm') from dual;
TO_CHAR(SYSDATE,'MM')
---------------------
12
SQL> select to_char(sysdate,'dd') from dual;
-- 傳回日期中的日
TO_CHAR(SYSDATE,'DD')
---------------------
16
SQL> select to_char(sysdate,'d')-1 from dual;
-- 傳回日期是星期幾:西方星期天表示周一,是以,這裡減1
TO_CHAR(SYSDATE,'D')-1
----------------------
1
SQL> select to_char(sysdate,'q') from dual;
-- 傳回日期是第幾個季度
TO_CHAR(SYSDATE,'Q')
--------------------
4
複制
3、to_number(str,‘fmt’):将某種格式的數值字元str,轉換為數值顯示。
1)常用的轉換符如下
2)案例如下
- 為了防止弄混淆:左側要轉換的數字字元串是什麼格式,右側就使用一緻相同的格式去進行比對。
SQL> select to_number('$123456.123456','$999999.000000') from dual;
TO_NUMBER('$123456.123456','$9
------------------------------
123456.123456
SQL> select to_number('¥123456.123456','L999999.000000') from dual;
TO_NUMBER('¥123456.123456','L
------------------------------
123456.123456
SQL> select to_number('$123,456.123456','$999,999.000000') from dual;
TO_NUMBER('$123,456.123456','$
------------------------------
123456.123456
複制
- 當要轉換的數字字元串長短不一,就是用最長的那個數字字元串的比對格式,去進行比對。
SQL> select to_number('$123.123','$999,999.000000') from dual;
TO_NUMBER('$123.123','$999,999
------------------------------
123.123
SQL> select to_number('$123,456.123456','$999,999.000000') from dual;
TO_NUMBER('$123,456.123456','$
------------------------------
123456.123456
複制
- 當要轉換的數字字元串的格式和長度(比對格式的長度隻能比原來數字的長度要長,不管是整數部分,還是小數部分。),與你所寫的比對格式不一緻時,就會報錯。
SQL> select to_number('¥123.123','$999.000') from dual;
select to_number('¥123.123','$999.000') from dual
ORA-01722: 無效數字
SQL> select to_number('$123.123','$999.00') from dual;
select to_number('$123.123','$999.00') from dual
ORA-01722: 無效數字
SQL> select to_number('$123.123','$99.00') from dual;
select to_number('$123.123','$99.00') from dual
ORA-01722: 無效數字
複制
4、to_date():把任何不規則的日期格式的字元型資料,轉換為日期型資料。
- 将不規則的類似于日期格式的字元串資料,轉換為規整的日期格式的資料。
SQL> select to_date('2018-02-10','YYYY-mm-dd') from dual;
TO_DATE('2018-02-10','YYYY-MM-
------------------------------
2018/2/10
SQL> select to_date('2018.02.10','YYYY.mm.dd') from dual;
TO_DATE('2018.02.10','YYYY.MM.
------------------------------
2018/2/10
SQL> select to_date('2018.02 10','YYYY.mm dd') from dual;
TO_DATE('2018.0210','YYYY.MMDD
------------------------------
2018/2/10
複制