字符串、數值和日期三類數據之間是能夠實現轉換的。函數
No.spa |
函數名code |
含義ci |
1開發 |
字符串 to_char(列 | 日期,格式)字符串 |
將日期或數字按格式轉爲字符串table |
2date |
日期 to_date(列 | 字符串,格式)select |
將字符串按格式轉爲日期數據類型 |
3 |
數字 to_number(列 | 字符串) |
將字符串轉爲數字 |
to_char()
1、日期變爲字符串,必須指定轉換的格式。
日期:年yyyy月mm日dd
時間:時hh hh24分mi秒ss
數字:任意數字9,貨幣L
示例1:將日期顯示格式化。
select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; |
示例2:查詢全部在4月份僱傭的僱員。
select * from emp where to_char(hiredate,'mm')='04'; select * from emp where to_char(hiredate,'mm')=4; --自動轉型 |
示例3:將數字格式化顯示,使用貨幣格式化顯示。
select to_char('4758475847583','9,9999,9999,9999') from dual; select to_char('4758475847583','L9,999,999,999,999') from dual; |
2、將字符串變爲日期
示例4:將指定字符串按照格式轉化爲日期
select to_date('2017-11-21','yyyy-mm-dd') from dual; |
3、將字符串轉化爲數字。
示例5:to_number()演示。
select to_number('12')+to_number('1') from dual; select '12'+'1' from dual; |
題目1:date char number之間常常進行轉換,請描述下列SQL語句。
select to_date('2017-07-14','yyyy-MM-dd') from dual; select to_date('2017-07-14','yyyy-MM-dd') as one_day from dual;
select to_char(sysdate,'yyyy-MM-dd') as today from dual;
select to_timestamp('2017-07-14 20:42:32.11','yyyy-MM-dd hh24:mi:ss:ff') as one_day from dual;
select to_char(systimestamp,'yyyy-MM-dd hh24:mi:ss:ff') as today from dual;
to_char(sysdate,'yyyy-MM-dd')
select to_number(replace(to_char(sysdate,'yyyy-MM-dd'),'-')) from dual; select to_number(replace(to_char(sysdate,'yyyy-MM-dd'),'-')) as one_number from dual; |
有如下函數不便進行分類,開發之中會常用:
No. |
函數名 |
含義 |
1 |
數字 nvl (列 | null, 默認值) |
空值置換。若是傳入的數據時null,則使用默認值,若是不是null,則使用原始數據。 |
2 |
數據類型 decode(列 | 字符串 | 數值,比較內容1,顯示內容1, 比較內容2,顯示內容2,…[,默認顯示內容]) |
條件取值。設置的內容會與每個比較內容進行比較,若是內容相同,則使用顯示內容進行輸出,若是都不行同,使用默認內容輸出。 |
示例1:查詢emp表全部僱員的僱員編號,姓名,薪資,佣金,年薪。
select empno,ename,sal,comm,(sal+nvl(comm,0))*12 from emp; |
null與全部數據計算後仍是null
示例2:將emp表中的職位(辦事員、經理)置換爲中文。
select empno,ename,job,decode(job,'CLERK','辦事員','MANAGER','經理') from emp; |