PL/SQL

PL/SQL 知识量:16 - 57 - 244

6.4 转换函数><

类型转换函数- 6.4.1 -

CAST函数会把内置的数据类型或集合类型值转换成内置的其他数据类型或集合类型值。其简化的语法结构如下:

CAST(expr as type_name)

简要说明:

  • expr:待转换的数据。

  • type_name:目标数据类型。

示例:

SQL> select cast(sysdate as varchar(12)),cast('234' as number(5)) from people where id=1;

CAST(SYSDATEASVARCHAR(12)) CAST('234'ASNUMBER(5))
-------------------------- ----------------------
07-8月 -23                                    234

数值或日期转字符串函数- 6.4.2 -

TO_CHAR函数可以将数值型参数转换成字符型数据,并可以对其指定格式。具体的语法结构如下:

TO_CHAR(n,[,fmt[,nlsparam]])

简要说明:

  • n:要转换的数据。

  • fmt:要转换成字符的格式。

  • nlsparam:指定fmt的特征,通常包括小数点字符、组分隔符、本地钱币符号等。

SQL> select to_char(3.1415,'9.9'),to_char(6653.3),to_char(sysdate,'yyyy-mm-dd') from people where id=1;

TO_CHAR(3.1415,'9.9') TO_CHAR(6653.3) TO_CHAR(SYSDATE,'YYYY-MM-DD')
--------------------- --------------- -----------------------------
 3.1                  6653.3          2023-08-07

3

字符转日期函数- 6.4.3 -

TO_DATE函数可以把给出的字符串按照一定的格式转换成日期型数据。具体的语法如下:

TO_DATE(char[,fmt[,nlsparam]])

简要说明:

  • char:待转换的字符。

  • fmt:表示转换的格式。

  • nlsparam:控制格式时使用的语言类型。

SQL> select to_date('2023-09-15','yyyy-mm-dd') from people where id=1;

TO_DATE('2023-09-15','YYYY-MM-DD')
----------------------------------
2023-9-15

字符串转数字函数- 6.4.4 -

TO_NUMBER函数和前面几个函数的功能相似,它可以把字符串转换成数字类型。具体的语法结构如下:

TO_NUMBER(expr[,fmt[,nlsparam]])

简要说明:

  • expr:待转换的字符串。

  • fmt:指定转换的数字格式。

  • nlsparam:该参数指定fmt的特征。

示例:

SQL> select to_number('3.1415926') from people where id=1;

TO_NUMBER('3.1415926')
----------------------
             3.1415926

替换NULL值函数- 6.4.5 -

NVL函数可以替换数据中的NULL值。它具有两个参数,这两个参数类型需要一致,或之间能进行隐式转换,否则会出错。具体的语法结构如下:

NVL(expr1,expr2)

简要说明:

  • expr1:原数据。

  • expr2:用来替换的数据。

  • 如果expr1的值为NULL,则会返回expr2的值,否则将返回expr1的值。

示例:

SQL> select nvl(null,'v'),nvl('notnull','v') from people where id=1;

NVL(NULL,'V') NVL('NOTNULL','V')
------------- ------------------
v             notnull

排除指定条件函数- 6.4.6 -

LNNVL函数带有一个参数,可以得到除了参数条件之外的数据,包括NULL的条件。其语法结构如下:

LNNVL(condition)

示例:

SQL> select * from people where lnnvl(age>25);

  ID NAME        AGE SEX    HEIGHT WEIGHT
---- ---------- ---- ------ ------ ------
   1 Bob          25 male      170     70
   4 Susan        19 female    168     55