在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声明为模板中的第一个条目。
反斜杠(“”)必须用作双反斜杠(“\”),例如“\\HH\\MI\\SS”。
双引号(' ')之间的字符串将被忽略,不会被解析。如果要在输出中写入双引号,必须在双引号前加上一个双反斜杠(' \ \ '),例如' \'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 ')
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。