Oracle to_char函数的使用方法

Oracle to_char函数的使用方法

在Oracle数据库中,to_char函数是我们最常用的函数之一。下面详细介绍to_char函数的应用。有兴趣的话,请看一下。

Oracle to_char函数的作用是将数字或日期类型转换为字符类型。下面详细介绍一下Oracle to_char函数的使用方法,希望对你有所帮助。

Postgres formatting函数提供了一套有效的工具,用于将各种数据类型(日期/时间、int、float、numeric)转换为格式化字符串,反之亦然。

注意:所有格式化函数的第二个参数是用于转换的模板。

表 5-7. 格式化函数

功能

返回

形容

例子

to_char

(时间戳,文本)

文本

将时间戳转换为字符串

to_char

(时间戳“现在”,“HH12:MI:SS”)

to_char

(整数,文本)

文本

将int4/int8转换为字符串

to_char

(125, 999)

to_char

(浮点型,文本型)

文本

将float4/float8转换为字符串

to_char

(125.8,“999D9”)

to_char

(数字,文本)

文本

将数字转换为字符串

to_char

(数字-125.8 , 999D99S )

截止日期(文本,文本)

日期

将字符串转换为日期

截止日期( 2000年12月5日,年月日

to_timestamp(文本,文本)

日期

将字符串转换为时间戳

to _ timestamp( 2000年12月5日,年月日星期一)

收件人号码(文本,文本)

数字的

将字符串转换为数字

to_number(12,454.8-, 99G999D9S )

表 5-8. 用于 date/time 转换的模板

模板

形容

殿下

一天中的小时数(01-12)

HH12

一天中的小时数(01-12)

HH24

一天中的小时数(00-23)

大调音阶的第三音

分钟(00-59)

圣人

秒(00-59)

SSSS

午夜后的秒数(0-86399)

上午或上午或下午或下午

中午标志(大写)

上午或上午或下午或下午

中午标志(小写)

y,YYY

带逗号的年份(4位及以上数字)

YYYY

年份(4年及以上)

YYY

年度最后三名

YY

今年的最后两个名额

Y

最后一个进来

公元前或公元前或公元后。

年份(大写)

公元前或公元前或公元后。

年份ID(小写)

大写月份的全称(9个字符)

混合大小写的完整月份名称(9个字符)

完整的小写月份名称(9个字符)

孟族人

缩写月份名称(3个字符)

孟人

混合大小写的月份名称缩写(3个字符)

孟族人

缩写月份名称(3个字符)

abbr. 毫米(millimeter)

月份(01-12)

完整的大写日期名称(9个字符)

一天

完整长度的混合案例日期名称(9个字符)

全长小写日期名称(9个字符)

缩写日期名称(3个字符)

大小写混合的缩写日期名称(3个字符)

缩写日期名称(3个字符)

DDD

一年中的每一天(001-366)

直接伤害

一个月中的天数(01-31)

D

一周中的每一天(1-7;孙=1)

W

一个月中的周数

(同whitewater)白水

一年中的周数

抄送

世纪(第二名)

J

儒略日(自公元前4712年1月1日起的日期)

Q

四分之一

空间

罗马数字的月份(I-XII;I=Jan)-资本

空间

罗马数字的月份(I-XII;I=Jan)-小写

所有模板都允许使用前缀和后缀修饰符。模板中总是允许使用修饰符。前缀“FX”只是一个全局修饰符。

表5-9。用于日期/时间模板的后缀

表 5-9. 用于日期/时间模板

to_char

()

后缀

形容

例子

调频

填充模式前缀

FMMonth

泰国(Thailand)

大写后缀

DDTH

泰国(Thailand)

小写序数后缀

DDTH

效果

固定模式全局选项(见下文)

外汇月日

特殊卡

拼写模式(尚未实现)

DDSP

使用说明:

如果不使用FX选项,to_timestamp和to_date会忽略空白。必须将FX声明为模板中的第一个条目。

反斜杠(“”)必须用作双反斜杠(“”),例如“HHMISS”。

双引号( )之间的字符串将被忽略,不会被解析。如果要在输出中写入双引号,必须在双引号前加上一个双反斜杠( ),例如 YYYY Month 。

to_char

支持不带前导双引号( )的文本,但双引号之间的任何字符串都会被快速处理,并且保证不会被解释为模板关键字(例如: Hello Year: YYYY )。

表5-10。

表 5-10. 用于

to_char

(数字)的模板

模板

形容

具有指定位数的值。

0

前导零的值。(句号)

小数

,(逗号)

分组(千位)分隔符

一对

尖括号中的负值

S

带有负号的负值(使用本地化)

L

货币符号(使用本地化)

D

小数

点(使用本地化)

G

分组分隔符(使用本地化)

大调音阶的第三音

指示位置的减号(如果数字为0)

波兰

指示位置的正号(如果数字为0)

副检察长

指示位置的加号/减号

罗马数字(输入1到3999之间的数字)

th还是TH

转换成序数

V

移动N位(

小数

)(见注释)

咿咿

科学计数。现在不支持。

使用说明:

使用“SG”、“PL”或“MI”的有符号单词不附加在数字上;例如,

to_char

(-12, S9999 )生成-12 ,

to_char

(-12, MI9999 )生成-12 。

Oracle

中的实现不允许MI在9之前,但要求9在MI之前。

PL、SG和TH是Postgres的扩展名。

9表示与9字符串中相同的位数。如果没有可用的数字,则使用空格。

TH不转换小于零的值,也不转换

小数

。这是一个Postgres扩展。

v方便地将输入值乘以10^n,其中n是v后面的数字。

to_char

不支持将v绑定到

小数

点(例如。不允许使用99.9V99)。

表5-11。

表 5-11.

to_char

示例

投入

输出

to_char

(现在(),日,HH12:MI:SS )

星期二,05:39:18

to_char

(现在(), FMDay,HH12:MI:SS )

星期二,05:39:18

to_char

(-0.1,99.99)

-.10

to_char

(-0.1, FM9.99 )

-.1

to_char

(0.1,0.9)

0.1

to_char

(12,9990999.9)

0012.0

to_char

(12,“FM9990999.9”)

0012

to_char

(485,999)

485

to_char

(-485,999)

-485

to_char

(485,9 9 9)

4 8 5

to_char

(1485,9,999)

1,485

to_char

(1485,“9G999”)

1 485

to_char

(148.5,999.999)

148.500

to_char

(148.5,“999D999”)

148,500

to_char

(3148.5, 9G999D999 )

3 148,500

to_char

(-485,“999秒”)

485-

to_char

(-485, 999英里)

485-

to_char

(485,“999英里”)

485

to_char

(485,“PL999”)

485

to_char

(485,“SG999”)

485

to_char

(-485, SG999 )

-485

to_char

(-485, 9SG99 )

4-85

to_char

(-485, 999PR )

485

to_char

(485,“L999”)

485德国马克

to_char

(485, RN )

CDLXXXV

to_char

(485,“FMRN”)

CDLXXXV

to_char

(5.2,“FMRN”)

V

to_char

(482,“第999个”)

第482次

to_char

(485,“好号码:‘999’)

好数字:485

to_char

(485.8,“前十进制:“999”,后十进制:“0.999”)

小数点前:485小数点后: 800

to_char

(12,“99V999”)

12000

to_char

(12.4,“99V999”)

12400

to_char

(12.45,“99V9”)

125

Oracle to_char函数最简单的应用:

/*1.0123 - 1.0123*/

从DUAL中选择TO_CHAR(1.0123)

/*123 - 123*/

从DUAL中选择TO_CHAR(123)

接下来,看以下内容:

/*0.123 - .123 */

SELEC TO_CHAR(0.123) FROM DUAL

上面的结果 . 123 在大多数情况下都不是我们想要的。我们要的是‘0.123’。

我们来看看to_char函数的具体用法:

TO_CHAR ( n [,fmt [, nlsparam]])

Oracle to_char函数将数字类型n转换为数值格式fmt的VARCHAR2类型值。“Nlsparams”以数字格式指定元素返回的字符,包括:小数点字符。组分隔符。当地硬币符号。国际硬币符号

该变量的形式为:

NLS _数字_字符= DG NLS _货币= tcxt NLS _ ISO _货币=地区

其中d是小数点字符,g是组分隔符。

示例:to _ char (17145, l099g999 , nls _ numeric _ characters=。 nls _ currency= nud)=nud017,145

通过以上理解并查看fmt的一些格式,我们可以用下面的表达式得到‘0.123’的值:

/*0.123 - 0.123 */

从DUAL中选择TO_CHAR(0.123, 0.999 )

/*100.12 - ###### */

从DUAL中选择TO_CHAR(100.12, 0.999 )

/*1.12 - 1.120 */

从DUAL中选择TO_CHAR(1.12, 0.999 )

‘0.123’出来了,但是前面还有一个空格。

100.12的值是# # # #, 1.12 的值变成了 1.120 。

我们重新定义了一项新要求:

1.一片空白。

2.小数点最多4位,至少保留2位。

1 - 1.00;1.1 - 1.00;1.12 - 1.12;1.1234 - 1.1234;

1.12345 - 1.1235

最终实现如下:

/*

FM:空格删除

999999.0099:小数点左边最大正数允许为7位,小数点右边最小数为2位,最大数为4位,第5位四舍五入。

*/

从DUAL中选择TO_CHAR(123.0233, FM9999999.0099 )

Oracle to_char函数的使用方法