OraclePL/SQL开发基础:类型转换函数
程序员文章站
2022-04-17 11:01:20
那么多的类型转换函数中,常用的也就是to_char,to_number,to_date这几个。下面对这几个进行详细的介绍。
使用to_char将日期型转换为字符串
默认情况下,日期格式都是以dd-m...
那么多的类型转换函数中,常用的也就是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;
上一篇: 激励学生的座右铭精选
下一篇: 中药 药物七情