转换函数

转换函数可以完成不同数据类型之间的转换,是平常使用比较多的函数类型之一。本节将介绍平常使用率较高的转换函数。

1. TO_CHAR(number) 函数。

该函数将一个数值型参数转换成字符型数据。其具体语法结构是 TO_CHAR(n,[,fmt[,nlsparam]]) ,各参数表示含义如下:

  • n:数值型数据。

  • fmt:要转成字符的格式。

  • nlsparam:由该参数指定 fmt 的特征。通常包括小数点字符、组分隔符、本地钱币符号。

该函数如果想用的好需要了解多方面的知识,这里不做详细介绍。

示例脚本如下:

select to_char(16.89), to_char(16.89, '99.9')
from dual;

2. TO_CHAR(date) 函数。

该函数将一个日期型数据转换成一个字符型数据。

它同前面介绍的同名函数一样,只不过转换的对象变化了。

具体的语法结构是 TO_CHAR(n,[,fmt[,nlsparam]]) ,各参数具体含义如下:

  • n:日期类型数据。

  • fmt:要转成字符的格式。

  • nlsparam:使用的语言类型。

示例脚本如下:

select to_char(sysdate, 'YYYY-MM-DD'),
       to_char(sysdate, 'HH24:MI:SS'),
       to_char(sysdate, 'D'),
       to_char(sysdate, 'WW'),
       to_char(sysdate, 'Q'),
       to_char(sysdate)
from dual;

3. TO_DATE 函数。

该函数可将字符型数据转换成日期型数据。

函数的具体语法结构是 TO_DATE(char[,fmt[,nlsparam]])

各参数的具体含义如下:

  • char:待转换的字符。类型可以是 CHAR、VARCHAR2、NCHAR、NVARCHAR2。

  • fmt:表示转换的格式。

  • nlsparam:控制格式化时使用的语言类型。

示例脚本如下:

select to_char(to_date('2010-7-1', 'YYYY-MM-DD'), 'MONTH')
from dual;

4. TO_NUMBER 函数。

该函数将字符串转成数字。语法结构是 TO_NUMBER(expr[,fmt[,nlsparam]]) ,各参数表示的具体含义如下:

  • expr:待转换的字符,其类型可以是 CHAR、VARCHAR2、NCHAR、NVARCHAR2。

  • fmt:指定转换的数字格式。

  • nlsparam:该参数指定 fmt 的特征。通常包括小数点字符、组分隔符、本地钱币符号。

示例脚本如下:

select to_number('2456.304', '9999.999')
from dual;

5. 数字格式元素

数字格式模型由一个或多个数字格式元素组成。

下表列出了数字格式模型的元素。

元素 举例 说明
, (逗号) 9,999 返回指定位置的逗号。
可以在数字格式模型中指定多个逗号。
限制:
逗号元素无法启动数字格式模型。
逗号不能出现在数字格式模型中的十进制字符或句点的右侧。
. (句号) 99.99 返回小数点,即指定位置的句点(.)。
限制: 只能在数字格式模型中指定一个句点。
$ $9999 返回带有前导美元符号的值。
0 0999
9990
返回前导零。
返回尾随零。
9 9999 返回具有指定位数的值,如果为正数,则前导空格;如果为负,则返回前导减号。前导零是空白的,除了零值,它返回零作为定点数的整数部分。
B B9999 当整数部分为零时(无论格式模型中的零如何),返回定点数的整数部分的空白。
C C999 在指定位置返回 ISO 货币符号(NLS_ISO_CURRENCY 参数的当前值)。
D 99D99 在指定位置返回十进制字符,即 NLS_NUMERIC_CHARACTER 参数的当前值。默认值为句点(.)。
限制: 只能在数字格式模型中指定一个十进制字符。
EEEE 9.9EEEE 使用科学计数法返回值。
G 9G999 返回指定位置的组分隔符(NLS_NUMERIC_CHARACTER 参数的当前值)。可以在数字格式模型中指定多个组分隔符。
限制: 组分隔符不能出现在数字格式模型中的小数字符或句点的右侧。
L L999 在指定位置返回本地货币符号(NLS_CURRENCY 参数的当前值)。
MI 9999MI 使用尾随减号(-)返回负值。
返回带有尾随空白的正值。
限制: MI 格式元素只能出现在数字格式模型的最后位置。
PR 9999PR 返回尖括号 <> 中的负值。
返回带有前导和尾随空白的正值。
限制: PR 格式元素只能出现在数字格式模型的最后位置。
RN RN 以大写形式返回罗马数字的值。
rn rn 以小写形式返回罗马数字的值。
值可以是 1 到 3999 之间的整数。
S S9999

9999S

使用前导减号(-)返回负值。
使用前导加号(+)返回正值。
使用尾随减号(-)返回负值。
使用尾随加号(+)返回正值。
限制: S 格式元素只能出现在数字格式模型的第一个或最后一个位置。
TM TM 文本最小数字格式模型返回(十进制输出)可能的最小字符数。此元素不区分大小写。
默认值为 TM9,它以固定表示法返回数字,除非输出超过 64 个字符。如果输出超过 64 个字符,则 Oracle 数据库会自动以科学计数形式返回该数字。
限制:
不能在此元素之前添加任何其他元素。
只能使用一个 9 或一个 E(或 e)来跟随此元素,但不能与这些元素的任何组合一起使用。以下语句返回错误:
SELECT TO_CHAR(1234, 'TM9e') FROM DUAL;
U U9999 在指定位置返回欧元(或其他)双重货币符号,由 NLS_DUAL_CURRENCY 参数的当前值确定。
V 999V99 返回一个乘以 10 n 的值(如果需要,将其四舍五入),其中 n 是 9 之后的数字 V。
X XXXX 返回指定位数的十六进制值。如果指定的数字不是整数,则 Oracle 数据库将其舍入为整数。
限制:
此元素仅接受正值或 0. 负值返回错误。
可以在此元素之前仅使用 0(返回前导零)或 FM。任何其他元素都会返回错误。如果既不指定 0 也不指定带有 X 的 FM,则返回总是有一个前导空白。

6. 日期时间格式元素

日期时间格式模型由一个或多个日期时间格式元素组成。

下表列出了日期格式模型的元素。

元素 说明
-
/
,
.
;
:
"文本"
在结果中复制标点符号和引用的文本。
AD
A.D.
AD 指示有或没有句点。
AM
A.M.
上午的简写
BC
B.C.
表示公元前
CC
SCC
世纪。
如果 4 位数年份的最后 2 位数字介于 01 和 99(含)之间,则该世纪比该年份的前 2 位数大 1。
如果 4 位数年份的最后 2 位数字是 00,则该世纪与该年份的前 2 位数字相同。
例如,2002 年返回 21; 2000 年回归 20。
D 星期几(1-7)。
DAY 一周之中的某天,不过返回的是星期几而已,这和语言设置有关系,在中国环境 NLS_DATE_LANGUAGE=SIMPLIFIED CHINESE ,用星期一到星期天表示
DD 月份中的某天 (1-31)
DDD 年份中的某天(1-366)
DL 返回长的日期格式。受到 NLS_TERRITORY,NLS_LANGUAGE 参数控制。例 2008 年 4 月 28 日 星期一
限制: 只能使用 TS 元素指定此格式,以空格分隔。
DS 返回短的日期格式。受到 NLS_TERRITORY,NLS_LANGUAGE 参数控制。 例如 2008-04-28
限制: 只能使用 TS 元素指定此格式,以空格分隔。
DY 日期的简称,就是星期几(当然这指的是中国环境下)
E 缩写时代名称(日本帝国,中华民国官方和泰国佛历)
EE 全时代的名字(日本帝国,中华民国官方和泰国佛历)
FF [1..9] 在 FF 之后使用数字 1 到 9 指定返回的日期时间值的小数部分中的位数。如果未指定数字,则 Oracle 数据库将使用为 datetime 数据类型或数据类型的默认精度指定的精度。时间戳和间隔格式有效,但 DATE 格式不存在。
例子: 'HH:MI:SS.FF'
SELECT TO_CHAR(SYSTIMESTAMP, 'SS.FF3') from dual;
FM 返回没有前导或尾随空格的值。
FX 需要字符数据和格式模型之间的精确匹配。
HH
HH12
一天中的小时(1-12)。
HH24 一天中的小时(0-23)。
IW 一年中的一周(1-52 或 1-53)基于 ISO 标准。
IYY
IY
I
ISO 年份的最后 3 个,2 个或 1 个数字。
IYYY 基于 ISO 标准的 4 位数年份。
J 朱利安日;公元前 4712 年 1 月 1 日以来的天数。用 J 指定的数字必须是整数。
MI 分钟(0-59)。
MM 月(01-12; 1 月 = 01)。
MON 月的简称,和国家有关系 NLS_DATE_LANGUAGE,例如 04 在中文环境下用 4 月表示。
MONTH 月的名称,国家有关系 NLS_DATE_LANGUAGE, 目前在中文下 04 表示为 4 月。
PM
P.M.
同 am,a.m. 表示下午
Q 季度(1-4)
RM 用罗马数字表示的月份,I, II, III, IV, V, VI, VII, VIII, IX, X, XI, XII
RR 只用两位数就可以存储 21 世纪的 20 世纪日期。
RRRR 一年。接受 4 位或 2 位输入。如果是 2 位数,则提供与 RR 相同的返回值。
SS 秒(0-59),一分钟内
SSSSS 一天从午夜开始的累积秒数。(0-86399)
TS 以短时间格式返回值。
TZD 夏令时信息。TZD 值是带有夏令时信息的缩写时区字符串。它必须与 TZR 中指定的区域相对应。时间戳和间隔格式有效,但 DATE 格式不存在。
TZH 时区小时。(请参阅 TZMformat 元素。)以时间戳和间隔格式有效,但不以 DATE 格式表示。
TZM 时区分钟。(请参阅 TZHformat 元素。)以时间戳和间隔格式有效,但不以 DATE 格式表示。
TZR 时区地区信息。该值必须是数据库中支持的时区之一。时间戳和间隔格式有效,但 DATE 格式不存在。
WW 一年中的一周(1-53),其中第 1 周从一年的第一天开始并持续到一年的第七天。
W 每周的一周(1-5),其中第 1 周从该月的第一天开始,到第七周结束。
X 本地基数字符。
Y , YYY 四位年,用逗号分隔
YEAR
SYEAR
发音表达的年,例如 2008=two thousand eight
YYYY
SYYYY
四位年,S 前缀表示公元前 BC
YYY
YY
Y
一次表示后面 3,2,1 位的年,例如 2008 可以分别取值为 008,08,8
© 2019 刘士. All rights reserved.

结果匹配 ""

    没有匹配的结果 ""