您的位置:首页 > 数据库 > Oracle

Oracle PL/SQL开发基础(第二十二弹:类型转换函数)

2017-07-26 00:02 609 查看
上一篇讲到了类型转换函数。不过那么多的类型转换函数中,常用的也就是
TO_CHAR
TO_NUMBER
TO_DATE
这几个。下面对这几个进行详细的介绍。

使用
TO_CHAR
将日期型转换为字符串

默认情况下,日期格式都是以DD-MON-YY来显示的,为了使其他的 显示格式显示日期值,可以使用
TO_CHAR
将日期从默认格式转换为指定的格式。例如:

SELECT TO_CHAR (SYSDATE, 'YYYY-MM-DD HH24:MI:SS AM')
FROM DUAL


可以看到,要显示为特定的日期格式,必须要指定特定的日期格式字符串,可以使用的格式字符串如下:

<
4000
td>年、月或周的天
日期格式元素描述
SCC或CC世纪,带-服务器前缀B.C.日期
日期中的年YYYY或SYYYY年,带-服务器前缀B.C.日期
YYY或YY或Y年的最后3、2或1个数字
Y,YYY年,在这个位置带逗号
IYYY,IYY,IY,I基于ISO标准的4、3、2或1位数字年
SYEAR或YEAR拼写年,带-服务器前缀B.C.日期
BC或ADB.C.A.D指示器
B.C.或A.D.带周期的B.C./A.D指示器
Q四分之一年,即季度
MM月,2位数字值
MONTH9位字符长度的带空格填充的月的名字
MON3字母缩写的月的名字
RM罗马数字月
WW或W年或月的周
DDD或DD或D
DAY9位字符长度的带空格填充的天的名字
DY3字母缩写的天的名字
HH、HH12或HH24天的小时,或小时(1~12),或小时(0~23)
AM或PM和A.M.或P.M.午后指示符,可带句点也可以不带句点
间隔符在结果字符串中所产生的所有必须的停顿间隔符
SS秒(0~59)
SSSSS午夜之后的秒(0~86399)
“of the”在结果中使用引文串
/.,
在结果中使用标点符号
TH序数(例如,DDTH显示为4TH)
SP拼写出数字(例如,DDSP显示为FOUR)
SPTH或THSP拼写出序数(例如:DDSPTH显示为FOURTH)
常用示例如下:

SELECT TO_CHAR (SYSDATE, 'ddspth') FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS AM') FROM DUAL;
SELECT TO_CHAR (SYSDATE, 'DD "of" MONTH') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'A.D.YYYY"年"-MONTH-DD"日"-DAY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'W') FROM DUAL;


通过灵活地组织这些格式字符串,可以创建出很多想要的日期格式。

使用
TO_CHAR
将数字型转换为字符串

如,将一个数字转换成带货币符号的字符串:

SELECT TO_CHAR(123.45678,'$99999.999') FROM DUAL;


TO_CHAR
在将数字转换为字符串时,可以使用格式字符串指定转换时使用的格式,常见的格式符元素如下:

数字格式元素描述示例结果
9每个9表示一个有效位,转换值的有效位和9的各位相同,如果要转换的是负数,则应有前导的负号,前导如为0,则视为空格9999991234
0显示前导的0或后继的0099999001234
$
返回带有前导货币符号的数值
$999999
$1234
L在指定的位置上返回本地货币符号L99999¥1234
.
在指定的位置上返回一个小数点,不管指定的小数点分隔符999999.991234.00
,在指定的位置上返回一个逗号,不管指定的千分位分隔符999,9991,234
MI该值如为负数,则加后继负号,如非负数则加一个后继占位符999999MI1234-
PR如为负值,用尖括号括起,如为正值,则前导后继各加一个空格999999PR
<1234>
EEEE科学计数法(格式化必须指定四个E)99.999EEEE1.234E+03
V返回与10的n次方相乘的值,n是v后面9的个数9999V99123400
B当整数为0时,将该小数的整数部分填充为空格B9999.991234.00
D返回小数点的位置,两边的9指定了最大位数9999D1234.
G返回千分位分隔符,G可以出现多次(99G99)12,34
C在指定的位置上返回ISO货币号C9999CNY1234
TO_CHAR
中的nlsparams参数影响到最终结果的显示,一般有下面几种形式:

-
NLS_NUMERIC_CHARACTERS
:可简写为
NLS_NUMERIC_CHARS
,表示为指定分组分隔符或小数点使用的字符。

-
NLS_CURRENCY
:指定Oracle默认的货币。

-
NLS_ISO_CURRENCY
:指定ISO货币符号的字符。

使用示例如下:

SELECT TO_CHAR (123456789, 'L999G999G999D99', 'NLS_CURRENCY=%')
FROM DUAL;-- 结果为:%123,456,789.00


使用
TO_DATE
将字符换转换为日期

使用如:

SELECT TO_DATE ('2010/09/13', 'YYYY-MM-DD', 'NLS_DATE_LANGUAGE=english')
FROM DUAL;

SELECT TO_DATE ('20100913', 'YYYY-MM-DD')
FROM DUAL;


使用
TO_NUMBER
将字符串转换为数字

使用如:

SELECT TO_NUMBER('01') FROM DUAL;

SELECT TO_NUMBER('$1234.5678','$9999.9999') FROM DUAL;

SELECT TO_NUMBER('$123,456,789.00','$999G999G999D99') FROM DUAL;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: