1.在 Oracle SQL 中转换为数字

可以使用CAST函数或TO_NUMBER函数。

CAST 和 TO_NUMBER 之间的主要区别在于 CAST符合 ANSI,而TONUMBER(连同其他 TO* 函数)是 Oracle 特定的。CAST 还适用于更广泛的数据类型。

TO_NUMBER 允许您将字符串(VARCHAR2、CHAR 等)转换为 NUMBER 类型。

TO_NUMBER(value)

数字转换实例:

TO_NUMBER 函数,它有一个参数——要转换的值。它接受一种字符串类型,并返回一个 NUMBER 数据类型。例如:

TO_NUMBER('150')

此函数将返回一个数字值 150。

还有 TO_BINARY_DOUBLE 和 TO_BINARY_FLOAT 函数,它们分别将值转换为 BINARY DOUBLE 和 BINARY FLOAT 数据类型。

2.在 Oracle SQL 中转换为字符串

与 NUMBER 数据类型一样,有两种方法可以将值转换为字符串数据类型。

Oracle中主要的字符串数据类型有:

字符
NCHAR
VARCHAR2
NVARCHAR2
文本

TO_CHAR 函数接受一个值并将其转换为 TEXT 数据类型。它的工作方式与 TO_NUMBER 类似,但有一些参数。

TO_CHAR(expression, [format,] [options])

表达式是要转换为 TEXT 数据类型的值,可以是日期、数字或 NTEXT 类型。格式是识别或格式化输入数据的方式,选项指定语言或货币信息。

在大多数情况下,只需要第一个参数,这是唯一需要的参数。

字符转换实例:

TO_CHAR('20-JAN-2015')

这将以 TEXT 数据类型显示日期。

TO_CHAR(1342)

这将以 TEXT 数据类型显示数字。

转换为字符串数据类型的另一种方法是使用 CAST。它可以转换为更多的数据类型:

字符
VARCHAR2
NCHAR
NVARCHAR2
CAST 函数具有与前面提到的相同的参数。

3.在 Oracle SQL 中转换为日期

就像数字和字符串类型一样,有两种方法可以转换为日期类型。

但是,在 Oracle 中,有两种主要的数据类型用于存储日期:

DATE – 存储日、月、年、小时、分钟和秒。
TIMESTAMP – 存储日、月、年、小时、分钟、秒和秒的小数部分

要仅转换为 DATE,可以使用TO_DATE 函数。它需要几个参数:

TO_DATE(string, [format,] [nls_parameters])

字符串是要转换的值,并且是唯一必需的参数。格式是存储为字符串的日期格式,nls_parameters 指定语言或区域设置。

日期转换实例:

TO_DATE('18-APR-2015')
这会将字符串中的值转换为 DATE 类型。
使用参数,可以指定不同类型的日期。

TO_DATE('01/02/2015', 'dd/mm/yyyy')
这会将日期指定为您提到的格式,并将其转换为日期。

如果要转换为日期和时间或 TIMESTAMP,则可以使用 TO_TIMESTAMP 函数。

TO_TIMESTAMP(string, [format,] [nls_parameters])

TO_TIMESTAMP('10-MAR-2015 13:06:10')
这会将字符串值转换为 TIMESTAMP 值。

4.CAST()的语法及用法

(1)语法:

CAST(Expression AS Data_type)

即CAST(表达式 AS 数据类型)
参数说明

Expression :需要被转换的表达式,可以是字段也可以是字段和其它函数组合的表达式等。

AS :固定用法格式,连接表达式和数据类型,“转为”的意思。

Data_type :目标数据类型,数据类型是SQL自带的不能自定义,主要有CHAR,DATE,DATETIME,TIME,BINARY,DECIMAL,SIGNED,UNSIGNED等。Decimal是具有小数点而且数值确定的数值类型。

(2)用法:将需要转换的表达式转为目标类型,可以是获取目标类型的字段,也可以与where 、case when等语法进行使用进行比较等。
CAST()的用法与Excel的TEXT函数的用法非常相似。

CAST()的实例

(1)将文本(字符串)时间转为日期格式,获取日期格式的字段
例:从表中获取日期格式的日期字段。假设表名为table,储存日期的字段是ctime。

select substring_index(ctime,' ',1) as dt from table

获得的结果为字符串(文本)类型的时间,需要获取日期格式的日期,则用CAST()转换成日期格式。“substring_index(ctime,' ',1)”是指从字段中提取部分值(目标值)。

select cast(substring_index(ctime,' ',1) as date) as dt from table

总结:

因此,有几种方法可以在数据类型之间进行转换。CAST 更通用,因为它可以处理更多的数据类型,但 TO_* 函数更容易使用,因为它们的参数更少。

Related Posts