Oracle 19C学习 - 05. 转换函数与条件表达式

数据转换的类型

隐式数据转换与显示数据转换。

 

隐式数据转换:

VARCHAR2 OR CHAR  <-> DATE

VARCHAR2 OR CHAR  <-> NUMBER

 

显示数据转换:

CHRRACTER与DATE: TO_DATE / TO_CHAR

CHRRACTER与NUMBER:TO_NUMBER / TO_CHAR

 

使用TO_CHAR函数转换日期为字符串

TO_CHAR(Date, ‘Format_Model’)

 

Format_Model参数内容:

Oracle 19C学习 - 05. 转换函数与条件表达式

 

 Oracle 19C学习 - 05. 转换函数与条件表达式

 

SELECT TO_CHAR(TO_DATE(‘2010-9-3‘,‘YYYY-MM-DD‘), ‘fmDD-MONTH-YYYY‘),     --fm让数字显示的日和月都不带前导0, MONTH显示完整的月份信息
TO_CHAR(TO_DATE(‘2010-9-3‘,‘YYYY-MM-DD‘), ‘DD-MON-YYYY‘)FROM dual; --没有fm看开头所以日期带前导0, MON显示缩写的月份信息。

TO_CHAR(TO_DATE( TO_CHAR(TO_
---------------- -----------
3-SEPTEMBER-2010 03-SEP-2010


SELECT TO_CHAR(sysdate, ‘fmDD-MON-YYYY DAY HH24:mi:ss AM‘) FROM dual;

TO_CHAR(SYSDATE,‘FMDD-MON-YYYYDAYHH24:MI:SSAM‘)
---------------------------------------------------------------------
2-MAY-2021 SUNDAY 20:57:4 PM

 

 

使用TO_CHAR函数将数字转换为字符串

TO_CHAR(number, ‘Format_Model‘)

Format_Model参数内容:

Oracle 19C学习 - 05. 转换函数与条件表达式

SELECT TO_CHAR(11000.99, 99,999.00) AS NUM2CHAR FROM dual;   --Format_Model的数字位数不能小于转换的数据
NUM2CHAR
----------
 11,000.99


SELECT TO_CHAR(11000.99, ‘$0099,999.00‘) AS NUM2CHAR FROM dual; --00是不能被省略的。 $表示美元货币单位。
NUM2CHAR
-------------
 $0011,000.99

SELECT TO_CHAR(9.99, ‘L9.99‘) FROM dual; --L是中文货币单位,在SQLDeveloper里面显示的是¥9.99

 


SELECT USERENV(‘LANGUAGE‘) FROM dual;   --显示语言信息,货币也是在这里决定的。SQLDeveloper和SQLPLUS的显示会有不同。

 

TO_NUMBER(STR, [Format_Model]):将字符串转换为数字格式。

 

SQL> SELECT TO_NUMBER(001573) FROM dual;

TO_NUMBER(001573)
-------------------
               1573

SELECT TO_NUMBER(‘1,000.99‘, ‘9,999.99‘) FROM dual; --带类型格式的转换,数字和类型格式要匹配

TO_NUMBER(‘1,000.99‘,‘9,999.99‘)
--------------------------------
                         1000.99

 


TO_DATE(STR, ‘FORMAT_MODEL‘): 将字符串转换为日期类型。

SQL> SELECT TO_DATE(2020-FEB-28,YYYY-MON-DD) FROM dual;   --根据数据的类型编写适应的Format Model。

TO_DATE(2020-FEB-2
-------------------
2020-02-28 00:00:00

 

 

通用函数(与NULL有关系的函数)

NVL(值1, 值2): 将为NULL的值1 替换为 值2, 值2的类型一定要与字段的类型匹配。

 

SELECT last_name, NVL(commission_pct,0)   --将commission_pct字段为NULL的记录替换为0
FROM employees

 

 

 NVL2(值1, 值2, 值3): 对于值1为空的,转换为值3。 对于值1不为空的,转换为值2.

SELECT commission_pct, NVL2(commission_pct,0,1)
FROM employees;

COMMISSION_PCT NVL2(COMMISSION_PCT,0,1)
-------------- ------------------------
                                      1
                                      1
            .4                        0
            .3                        0
            .3                        0
            .3                        0

 

 

 

NULLIF(值1, 值2) 如果值1和值2不同,结果为值1;如果相同,则为NULL。

SELECT last_name, LENGTH(last_name) "EXP1",
     first_name, LENGTH(first_name) "EXP2",
     NULLIF(LENGTH(last_name), LENGTH(first_name)) "RESULT"
    FROM employees;

LAST_NAME                       EXP1 FIRST_NAME                 EXP2     RESULT
------------------------- ---------- -------------------- ---------- ----------
Cambrault                          9 Nanette                       7          9
Chen                               4 John                          4
Chung                              5 Kelly                         5
Colmenares                        10 Karen                         5         10
Davies                             6 Curtis                        6

 

 

 COALESCE(表达式, 值1):当表达式中有NULL值,则结果为值1,否则结果为表达式的计算结果。

SELECT last_name, salary, commission_pct,
COALESCE(salary*(1 + commission_pct), salary+1000) "新工资"
FROM employees;

Oracle 19C学习 - 05. 转换函数与条件表达式

 



 

 



 

 

Oracle 19C学习 - 05. 转换函数与条件表达式

上一篇:(1)MySQL空间数据实战


下一篇:Photoshop简单制作雷鸣闪电特效