SQL 中的转换函数

2025年2月25日 | 阅读 5 分钟

这些函数用于将一个数据类型的值转换为另一个数据类型。它只返回转换后的值,不对数据库进行任何更改。Oracle 服务器可以执行以下转换,用户也可以显式执行。

Conversion Functions in SQL

下面我们详细解释每种转换。

隐式数据类型转换

在这种数据转换类型中,SQL 在赋值中使用时会自动将一种数据类型转换为另一种。为了让 SQL 自动将一种数据类型转换为另一种,源数据类型必须看起来像它正在被转换的目标数据类型。

以下指南根据将使用数据的函数描述了从一种数据类型到另一种数据类型的自动数据转换。

  • 数字或日期类型转换为字符字符串。
  • 如果 char 或 varchar2 数据类型仅包含数字,则会将其转换为数字数据类型。
  • 如果 char 或 varchar2 数据类型格式为 DD-MON-YY,则会将其转换为日期数据类型。
  • 日期数据类型不会转换为数字数据类型,反之亦然。

让我们看一个下面的例子

首先创建一个表

现在插入数据。

使用以下查询检索数据。


ID姓名SALHIERDATEDEPT_NO
1Satish3400011-APR-1510
4Johni3100001-JAN-2130
5Robin3200019-JUN-1720
3Lalit4700021-NOV-1920
6马诺吉4000028-DEC-2030
2Neha2700018-MAY-1810

让我们看下面的例子。

示例 1:要从 emp_details 表中检索 id、name 和 sal,其中 sal 大于 30000,请使用以下查询

输出

ID姓名SAL
1Satish34000
4Johni31000
5Robin32000
3Lalit47000
6马诺吉40000

示例 2:要从 emp_details 表中检索 id、name 和 sal,其中 sal 大于 30000,请使用以下查询。

输出

ID姓名SAL
1Satish34000
4Johni31000
5Robin32000
3Lalit47000
6马诺吉40000

注意:两个示例的输出相同,在示例 2 中,使用 '30000' 作为文本,它会自动转换为 int 数据类型。

显式数据类型转换

Conversion Functions in SQL

以下是用户显式执行的转换函数列表

序号函数名目的
1.TO_CHAR (日期转换)将日期值转换为 varchar2 值
2.TO_CHAR (数字转换)将数值转换为 varchar2 值
3.TO_DATE将字符字符串转换为其等效日期
4.TO_NUMBER将字符值转换为数值。

其他一些转换函数包括 convert、RAWTOHEX、HEXTORAW、CHARTOROWID、TO_LOB 等。

下面我们逐一详细解释显式数据类型转换函数。

1. TO_CHAR (日期转换):这是一个基于日期的函数。它用于使用指定的日期格式将 DATE 值转换为 VARCHAR2 值。

语法

在上面的语法中,date_format 是可选的。如果日期以默认格式转换为 varchar2 值,则省略它。一些格式选项是

date_format
Y、YY、YYY、YYYY年份的数字值
MM、MON、MONTH它代表月份
D、DD、DDD它代表天数的数字值
HH、HH12、HH24它代表一天中的小时
HH、SS它分别代表小时中的分钟、分钟中的秒。
W 或 WW它代表一年或一个月的星期
DAY、DY它代表日期的名称,长度为九个字符,三个字符的缩写,用空格填充。
Q它代表一年中的季度
BC/B.C. 或 AD/A.D.它代表带句点或不带句点的 BC 或 AD 指示符。
AM/A.M. 或 PM/P.M.它代表带句点或不带句点的子午线指示符。
TH它代表序数。
SP它代表拼出的数字。
SPTH 或 THSP它代表拼写的序数。
"of"它代表将在结果中显示的带引号的字符串。

输出

HIERDATETO_CHAR(HIERDATE,'DD-MM-YYYY')
11-APR-1511-04-2015
18-MAY-1818-05-2018

输出

Conversion Functions in SQL

2. TO_CHAR (数字转换):这个基于数字的函数用于将数值转换为 varchar2 值,可以选择使用指定的数字格式。

语法

在上面的语法中,num_format 是可选的。它可以是 9,999(在指定位置放置逗号),999.99(在所需位置放置小数点),$9999(在数字值前面返回美元符号)。

下表列出了不同的可用数字格式。

元素描述
9它代表一个数字。
0它显示前导零。
$它放置一个浮动的美元符号。
L它放置一个浮动的本地货币符号
*它在指定位置打印小数点。
,它在指定位置打印千位分隔符。
EEEE它以科学计数法显示数字。

输出

SALTO_CHAR(SAL,'$99,999.00')
32000$32,000.00
47000$47,000.00

3. TO_DATE:这个 TO_DATE 函数用于将字符字符串转换为其等效日期。可以提供日期格式字符串来告诉 Oracle 如何解释字符字符串。

语法

在上面的语法中,for_string 与日期格式相同。这里 char_value 可以是文字字符串、文字数字或包含字符串或数字的数据库列。在每种情况下,格式必须与格式指定的完全一致。只有当 char_value 的格式为 'DD-MON-YY' 时,才能省略该格式。

输出

Conversion Functions in SQL

4. TO_NUMBER:TO_NUMBER 函数用于将字符值转换为数值。在这种情况下,字符串中的字符必须是格式正确的数字,仅包含 0-9、-、+ 和字母。

语法

在上面的语法中,string1 参数是必需的,并且在单引号中指定的 format 参数是可选的。

输出

Conversion Functions in SQL
下一主题SQL 选择题