oracle有三种最基本的数据类型,即字符型、数值型、日期型。
oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数。
相信这些函数,在进行数据库的操作过程中,都大量的被使用过。。
1)to_char
数值、日期->字符型
语法:to_char(num|date,[format mask],[nls_parameters])
参数:num|date 待转换的数值或者日期
format mask:可选参数
数字->字符型的可用格式
格式元素 | 元素说明 | 格式 | 数字 | 字符结果 |
9 | 数字宽度 | 9999 | 12 | 12 |
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 | 科学计数法 | 99.99999EEEE | 121.976 | 1.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 |
日期->字符型的可用格式(示例日期:02-JUN-1975)
格式说明 | 说明 | 结果 |
Y | 年的最后一位 | 5 |
YY | 年的最后两位 | 75 |
YYY | 年的最后三位 | 975 |
YYYY | 四位数字表示的年 | 1975 |
RR | 两位数字表示的年 | 75 |
YEAR | 区别大小写并用英语拼写的年 | NINETEEN SEVENTY-FIVE |
MM | 两位数表示的月 | 06 |
MON | 月的三个字母缩写 | JUN |
MONTH | 区分大小写并用英语拼写的月 | JUNE |
D | 星期几 | 2 |
DD | 月的两位数日(即是本月的第几天) | 02 |
DDD | 年的日 | 153 |
DY | 星期的三个字母缩写 | MON |
DAY | 区分大小写并用英语拼写的星期 | MONDAY |
其他不常用的格式掩码
演示数据:24-SEP-1000 BC
格式元素 | 说明 | 结果 |
W | 月的周数 | 4 |
WW | 年的周数 | 39 |
Q | 年的季度 | 3 |
CC | 世纪 | 10 |
S preceding CC,YYYY,YEAR | 如果日期是BC,那么减号就在结果之前 | -10,-1000或者-ONE THOUSAND |
IYYY,IYY,IY,I | 分别表示4,3,2,1为ISO日期 | 1000,000,00,0 |
BC,AD,B.C. and A.D. |
|
|
J | 儒略日—从公元前4713年12月31日开始的天数 | 1356075 |
IW | ISO标准周(1到53) | 39 |
RM | 用罗马数字表示的月 | IX |
时间组件的日期格式掩码
演示数据:27-JUN-2010 21:35:13
格式元素 | 说明 | 结果 |
AM,PM,A.M.和P.M. | 子午线指示器 | PM |
HH,HH12,HH24 | 一天的小时,1-12时和0-23时 | 09,09,21 |
MI | 分(0-59) | 35 |
SS | 秒(0-59) | 12 |
SSSSS | 午夜之后的秒(0-86399) | 77713 |
其他日期格式掩码
格式元素 | 说明和格式掩码 | 结果 |
-/.,?#! | 标点符号:’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 | 拼写出位置或者序数:’hh24SpTh’ | Fourteenth |
2)to_date
字符值->日期值
语法:to_date (string,[format mask],[nls_parameters])
参数:string 待转换的字符值
format mask:可选参数
格式掩码同to_char转换为date时相同。
备注:转换时要根据给定的string设定正确的格式掩码,否则
Ora_01840:input value is not long enough for date format.
Ora_01862:the numeric value does not match the length of the format item.
----以下合理
SELECT to_date('04-JUN-08', 'DD-MON-RR', 'NLS_DATE_LANGUAGE = American')
FROM DUAL;--04-6月-08
SELECT to_date('04-JUNE-08', 'DD-MON-RR', 'NLS_DATE_LANGUAGE = American')
FROM DUAL;--04-6月-08
SELECT to_date('04-JUNE-2008', 'DD-MON-RR', 'NLS_DATE_LANGUAGE = American')
FROM DUAL;--04-6月-08
3) to_number
字符值->数字值
语法:to_number (string,[format mask],[nls_parameters])
参数:string 待转换的字符值
format mask:可选参数
格式掩码同to_char转换为number时相同。
备注:如果使用较短的格式掩码就会返回错误。
例如: to_number(123.56,’999.9’)返回错误。