OraclePL/SQL开发基础:类型转换函数

那么多的类型转换函数中,常用的也就是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

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

日期格式元素 描述
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或ad b.c.a.d指示器
b.c.或a.d. 带周期的b.c./a.d指示器
q 四分之一年,即季度
mm 月,2位数字值
month 9位字符长度的带空格填充的月的名字
mon 3字母缩写的月的名字
rm 罗马数字月
ww或w 年或月的周
ddd或dd或d 年、月或周的天
day 9位字符长度的带空格填充的天的名字
dy 3字母缩写的天的名字
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,则视为空格 999999 1234
0 显示前导的0或后继的0 099999 001234
$ 返回带有前导货币符号的数值 $999999 $1234
l 在指定的位置上返回本地货币符号 l99999 ¥1234
. 在指定的位置上返回一个小数点,不管指定的小数点分隔符 999999.99 1234.00
, 在指定的位置上返回一个逗号,不管指定的千分位分隔符 999,999 1,234
mi 该值如为负数,则加后继负号,如非负数则加一个后继占位符 999999mi 1234-
pr 如为负值,用尖括号括起,如为正值,则前导后继各加一个空格 999999pr <1234>
eeee 科学计数法(格式化必须指定四个e) 99.999eeee 1.234e+03
v 返回与10的n次方相乘的值,n是v后面9的个数 9999v99 123400
b 当整数为0时,将该小数的整数部分填充为空格 b9999.99 1234.00
d 返回小数点的位置,两边的9指定了最大位数 9999d 1234.
g 返回千分位分隔符,g可以出现多次 (99g99) 12,34
c 在指定的位置上返回iso货币号 c9999 cny1234

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;
(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐