欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

OracleDB隐式和显示数据类型转换讲解

程序员文章站 2022-05-24 20:12:42
转换函数 除了Oracle 数据类型,还可以使用美国国家标准协会(ANSI) 、DB2 和SQL/DS 数据类型定义Oracle DB 中表的列。但是,Oracle S...

转换函数

OracleDB隐式和显示数据类型转换讲解

除了Oracle 数据类型,还可以使用美国国家标准协会(ANSI) 、DB2 和SQL/DS 数据类型定义Oracle DB 中表的列。但是,Oracle Server 会在内部将这些数据类型转换为Oracle数据类型。在某些情况下,Oracle Server 会收到数据类型与预期的数据类型不同的数据。发生这种情况时,Oracle Server 可自动将该数据转换为预期的数据类型。这种数据类型转换可以由Oracle Server 隐式完成,也可以由用户显式完成。隐式数据类型转换将按照下面说明的规则进行。显式数据类型转换可通过使用转换函数来执行。转换函数用于将一种数据类型的值转换为另一种数据类型的值。通常,函数名称的格式遵循data type TO data type惯例。第一个数据类型是输入数据类型,第二个数据类型是输出数据类型。注:尽管可以使用隐式数据类型转换,但仍建议执行显式数据类型转换以确保 SQL 语句的可靠性。

隐式数据类型转换在表达式中,Oracle Server 可以自动执行以下转换:从VARCHAR2 或CHAR隐式转换为NUMBER从VARCHAR2 或CHAR隐式转换为DATE

Oracle Server 可以在表达式中自动执行数据类型转换。例如,表达式hire_date >'01-JAN-90' 将导致字符串'01-JAN-90' 隐式转换为一个日期。因此,表达式中的VARCHAR2 或CHAR 值可以隐式转换为数字或日期数据类型。

对于表达式计算,Oracle Server 可以自动执行以下转换:从NUMBER隐式转换为VARCHAR2 或CHAR从DATE隐式转换为VARCHAR2 或CHAR

通常,Oracle Server 在需要进行数据类型转换时使用适用于表达式的规则。例如,表达式grade = 2 将导致数字2 隐式转换为字符串“2”,因为grade 为CHAR(2)列。注:只有字符串代表一个有效数字时,CHAR 到NUMBER 的转换才能成功。

显式数据类型转换SQL 提供了以下三种函数,用于将值从一种数据类型转换为另一种数据类型:

TO_CHAR( number | date,[ fmt ],[nlsparams])按照格式样式 fmt ,将数字或日期值转换为VARCHAR2 字符串。数字转换:nlsparams 参数指定以下由数字格式元素返回的字符:-- 小数点字符--组分隔符--本地货币符号--国际货币符号如果省略 nlsparams 或者任何其它参数,则该函数将在会话中使用默认参数值。日期转换:nlsparams 参数指定返回的月和日名称以及缩写所用的语言。如果省略此参数,则该函数将在会话中使用默认的日期语言。TO_NUMBER(char,[fmt],[nlsparams] )按照可选格式样式 fmt 指定的格式,将包含数字的字符串转换为数字。对于数字转换,nlsparams 参数在此函数中的作用与它在 TO_ CHAR 函数中的作用相同。TO_DATE(char ,[fmt ],[ nlsparams])按照指定的 fmt ,将代表日期的字符串转换为日期值。如果省略 fmt ,则格式为 DD-MON-YY 。对于日期转换,nlsparams 参数在此函数中的作用与它在 TO_ CHAR 函数中的作用相同。