在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 )