暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何在 Oracle SQL 中转换数据类型?

原创 小小亮 2022-10-13
4737

使用 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/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论