使用 Oracle SQL 时,有很多方法可以转换数据类型。三种最常见的数据类型是字符串 (VARCHAR2)、数字和日期。让我们看一下如何转换为这些类型。
在 Oracle SQL 中转换为数字
要将值转换为数字数据类型,有两种方法可以做到:
您可以使用CAST函数或TO_NUMBER函数。
这是在 Oracle SQL 中转换数据类型的最常用方法之一。
CAST 和 TO_NUMBER 之间的主要区别在于 CAST符合 ANSI,而TO_NUMBER(连同其他 TO_* 函数)是 Oracle 特定的。CAST 还适用于更广泛的数据类型,因为 TO_* 函数只有少数数据类型。
让我们从 TO_NUMBER 开始。
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 数据类型。
将值转换为 NUMBER 数据类型的另一种方法是使用 CAST 函数。
CAST (expression AS type_name)在此函数中,表达式是您要转换的值,type_name 是您要转换的数据类型。您可以在此处指定多种类型,但 NUMBER 是您可以使用的唯一数字类型。
例如:
CAST('200' AS NUMBER)此函数将返回一个数字值 200。
在 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 函数具有与前面提到的相同的参数。
CAST (expression AS type_name)在此函数中,表达式是您要转换的值,type_name 是您要转换的数据类型。您可以在此处指定几种类型,这些类型来自上面的列表。
例如:
CAST(1094 AS CHAR)这会将值 1094 转换为 CHAR 值。
CAST('01-FEB-2015' AS VARCHAR2)这会将日期值转换为 VARCHAR2 数据类型。
在 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')这会将日期指定为您提到的格式,并将其转换为日期。
如果不指定时间,则使用默认值 00:00:00(午夜)。
如果要转换为日期和时间或 TIMESTAMP,则可以使用 TO_TIMESTAMP 函数。它以类似的方式工作。
TO_TIMESTAMP(string, [format,] [nls_parameters])一个例子在这里:
TO_TIMESTAMP('10-MAR-2015 13:06:10')这会将字符串值转换为 TIMESTAMP 值。
转换为日期类型的最后一种方法是使用 CAST。再一次,您使用 CAST 并指定要转换为的数据类型。
CAST (expression AS type_name)在此函数中,表达式是您要转换的值,type_name 是您要转换的数据类型。您可以在此处指定多种类型,例如 DATE 或 TIMESTAMP。
例如:
CAST('18-APR-2015' as DATE)这会将字符串值转换为 DATE。您可以使用 TIMESTAMP 执行类似的功能。
在 Oracle SQL 中转换数据类型
因此,有几种方法可以在数据类型之间进行转换。CAST 更通用,因为它可以处理更多的数据类型,但 TO_* 函数更容易使用,因为它们的参数更少。
功能又是:
- TO_NUMBER
- TO_CHAR
- TO_DATE
- CAST
原文标题:How to Convert Data Types in Oracle SQL
原文作者:Ben Brumm
原文链接:https://www.databasestar.com/convert-data-types-in-oracle-sql/




