这篇文章主要为大家展示了“Oracle中转换函数有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle中转换函数有哪些”这篇文章吧。
转换函数
TO_CHAR函数将数据转换为字符
TO_CHAR函数返回VARCHAR2数据类型的值。当将它应用于NUMBER数据类型的值时TO_CHAR(num1[,format mask[,nls_parameters]])
num参数是强制性的,它必须是一个数字值。可选的format参数用来指定数字格式信息——例如宽度、货币符号、小数点的位置和组(或者千位)分隔符,必须将它们包含在单引号内。除此之外,对于要转换为字符的数字而言,还有其他一些格式信息的选项。
select to_char(00001) from dual;
select to_char(00001,'099999') from dual;
TO_CHAR函数将数据转换为字符
格式元素 | 元素说明 | 格式 | 数字 | 字符结果 |
9 | 数字宽度 | 9999 | 12 | 12 |
0 | 显示前面的0 | 09999 | 0012 | 00012 |
. | 小数点的位置 | 09999.999 | 030.40 | 00030.400 |
D | 小数分隔符的位置(默认为名点) | 09999D999 | 030.40 | 00030.400 |
, | 逗号的位置 | 09999,999 | 03040 | 00003,040 |
G | 组分隔符的位置(默认为逗号) | 09999G999 | 03040 | 00003,040 |
$ | 美元 | $099999 | 03040 | $003040 |
L | 当地货币 | L099999 | 03040 | GBP003040(如果nls_currency设置为GBP) |
MI | 表示负数的减号的位置 | 99999MI | -3040 | 3040- |
PR | 包围在括号内的负数 | 99999PR | -3040 | <3040> |
EEEE | 科学计数法 | 99999EEEE | 121.976 | 21976E+02 |
U | Nls_dual_currency | U099999 | 03040 | CAD003040(如果nls_dual_currency设置为CAD) |
V | 乘以10n次(n是V之后9的数量) | 9999V99 | 3040 | 304000 |
S | 前面加上+或者- | S999999 | 3040 | +3040 |
TO_CHAR函数将日期转换为字符
使用TO_CHAR函数,可以利用各种格式模型将DATE项转换为几乎所有日期的字符表示形式。
语法:TO_CHAR(date1[,format[,nls_parameter]])
只有date1参数是强制的,date1必须是可以被隐式转换为日期的值。可选的format参数区分大小写,必须奖它包含在单引号内。格式掩码指定哪些日期元素,是用长的名称还是用缩写名称来描述这个元素。还会自动给日和月的名称填充空格。可以使用格式掩码的修饰符来删除这些空格,这个修饰符称为填充模式(fm)运算符。在格式模型之前添加字母fm,就会命令Oracle从日和月的名称中删除所有空格。对于被转换为字符串的日期而言还有许多格式选项。
select to_char(sysdate) || ' is today''s date' from dual;
select to_char(sysdate,'Month') || 'is special time ' from dual;
select to_char(sysdate,'fmMonth') || 'is special time ' from dual;
to_char把日期转换为字符串
假设格式元素作用于日期02-JUN-1975
格式元素 | 说明 | 结果 |
Y | 年的最后一位 | 5 |
YY | 年的最后两位 | 75 |
YYY | 年的最后三位 | 975 |
YYYY | 4位数字表示的年 | 1975 |
RR | 两们数字表示的年(已知世纪) | 75 |
YEAR,year,Year | 区分大小写并用英语拼写的年 | NINETEEN SEVENTY FIVE, Nineteen seventy five, Nineteen Seventy Five |
MM | 两位数表示的月 | 06 |
MON,mon,Mon | 月的三个字母缩写 | JUN,jun,Jun |
MONTH,month,Month | 区分大小写并用英语拼写的月 | JUNE,june,June |
D | 星期的第几天 | 2 |
DD | 月的两位数日 | 02 |
DDD | 年的日 | 153 |
DY,dy,Dy | 星期的三个字母缩写 | MON,mon,Mon |
DAY,day,Day | 区分大小写并用英语拼写的星期 | MONDAY,Monday,Monday |
提取日期时间数据类型的时间部分,表中使用的日期为27-JUN-2010 21:35:13
格式元素 | 说明 | 结果 |
AM,PM,A.M.和P.M. | 子午线指示器 | PM |
HH、HH2和HH24 | 一天的小时,1-12时和0-23时 | 09,09,21 |
MI | 分(0~59) | 35 |
SS | 秒(0~59) | 13 |
SSSSS | 午夜之后的秒(0~86399) | 77713 |
其他一些能够在日期时间格式模型中使用的元素。标点符号用来分隔格式元素。有三种类型的后缀可以格式化日期时间元素的组件。而且,如果将字符字面值包含在双引号内,那么就能够在返回值中包含它们。使用日期12/SEP/08 14:31
格式元素 | 说明和格式掩码 | 结果 |
/ . , ? # ! - | 标点符号:’MM.YY’ | 09.08 |
“any character literal” | 字符字面值:’”Week” W “of” Month’ | Week 2 of September |
TH | 位置或者序数文本:’DDth ”of” Month’ | 12TH of September |
SP | 拼写出数字:’MmSP month Yyyysp’ | Nine September Two Thousand Eight |
THSP or SPTH | 拼写出位置或者序数:’hh34SpTh’ | Fourteenth |
使用TO_DATE函数将字符转换为日期
TO_DATE函数返回DATE类型的值。转换为日期的字符串可能包含所有或者部分组成DATE的日期时间元素。当只转换包含日期时间元素子集的字符串时,Oracle提供资金默认值来构造完整的日期。字符串的组成部分通过格式模型或掩码与不同的日期时间元素相关联。
语法:TO_DATE(string1[,format,[nls_parameter]])
只有string1参数是强制性的,如果没有提供格式掩码,string1会隐式转换为日期。几乎总是使用可选的fromat参数,在单引号内指定它,与TO_CHAR的格式掩码相同。TO_DATE函数有fx修饰,表示string1和格式掩码必须完全匹配,否则报错。
select to_date('25-DEC-2010') from dual;
select to_date('25-DEC') from dual; --错误
select to_date('25-DEC','DD-MON') from dual;
select to_date('25-DEC-2010 18:03:45','DD-MON-YYYY HH24:MI:SS') from dual;
select to_date('25-DEC-10','fxDD-MON-YYYY') from dual;--错误
TO_NUMBER函数将字符转换为数字
TO_NUMBER函数返回NUMBER类型的值。转换为数字的字符串必须有合适的格式,以便用相应的格式掩码转换或删除所有非数字组成部分。
语法:TO_NUMBER(string1[,format,[nls_parameter]])
只有string1参数是强制性的,如果没有提供格式掩码,string1就必须是可以隐式转换为数字的值。用单引号指定可选的format参数。与TO_CHAR转换数字到字符串中的格式掩码相同。
select to_number('$1,000.55') from dual;--错误
select to_number('$01,000.55','$0999,999.999') from dual;
注:TO_NUMBER函数将字符项转换为数字。如果使用较短的格式掩码转换数字,就会返回错误,如果使用较长的格式掩码转换数字,就会返回原数字。
以上是“Oracle中转换函数有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!