Oracle 转换函数
在操作表中的数据时,经常需要将某个数据从一种数据类型转变为另外一种数据类型。这时就需要使用数据转换函数。例如,如果希望把表示价格的数字数据转变为字符数据,就需要使用TO_CHAR()函数。通常这类函数遵循如下惯例:函数名称后面跟着待转换类型以及输出类型。
● TO_CHAR()函数
TO_CHAR()函数是最常使有的转换函数,该函数可以把指定的表达式转变成字符串。TO_CHAR()函数的语法形式如下:
TO_CHAR(X[,FORMAT])
在上面的语法中,参数X表示将要转变的表达式;FORMAT参数用于指定X表达式的格式。可用的格式如表5-7所示。
表5-7 FORMAT格式参数
参数 | 说明 |
9 | 返回数字。如果数字是负数,则在数字前面包括负号 |
0 | 0999表示数字前面有0,9990表示数字后面有0 |
. | 表示小数点的位置 |
, | 表示在指定位置显示逗号 |
$ | $99表示数字前面是货币符号 |
B | 表示如果整数部分为0,则使用空格表示 |
C | 在指定的位置使用ISO标准货币符号 |
D | 在指定的位置返回小数点的位置 |
EEEE | 使用科学记数法 |
FM | 删除数字的前后空格 |
G | 在指定的位置显示分组符号 |
L | 在指定的位置显示本地货币符号 |
MI | 负数的尾部有负号,正数的尾部有空格 |
PR | 负数的尾部有三角括号“<>”,正数的头部和尾部有空格 |
RN/rn | 返回罗马数字,RN表示大写罗马数字,rn表示小写罗马数字。数字必是1到3999之间的整数 |
S | S999表示负数的前面有负号,正数的前面有正号。999S表示负数的后面有号,正数的后面有正号 |
TM | 使用最小的字符数返回数字 |
U | 在指定位置返回双货币号 |
V | 返回一个数字乘以10^n移动指定位(小数) |
X | 返回十六进制数字 |
HH或HH12 | 一天的小时数(01-12) |
HH24 oracle切割字符串函数 | 一天的小时数(00-23) |
MI | 分钟 (00-59) |
SS | 秒(00-59) |
MS | 毫秒(000-999) |
US | 微秒(000000-999999) |
AM 或 A.M. 或 PM 或 P.M. | 正午标识(大写) |
am 或 a.m. 或 pm 或 p.m | 正午标识(小写) |
YYYY | 4位年号 |
YY | 年的后两位 |
BC 或 B.C. 或 AD 或 A.D | 纪元标识(大写) |
bc 或 b.c. 或 ad 或 a.d | 纪元标识(小写) |
MONTH/month | 大/小写表示的月份名 |
MM | 月份号(01-12) |
DAY/day | 大/小写全长日期名(空白填充为9字符) |
例如,下面的示例使用TO_CHAR()函数将当前系统时间按指定格式转变为字符串。
SQL> select to_char(sysdate,'HH12-MI-SS') 时间 from dual;
时间
--------
04-50-02
● TO_DATE()函数
该函数将字符串转化为Oracle中的一个日期。to_date()函数的语法格式如下:
TO_DATE (c[,fmt])
其中,如果参数fmt不为空时,则按照fmt中指定格式进行转换。注意这里的fmt参数,如果fmt为J则表示按照公元制转换,为C则必须为大于0并小于5373484的正整数。
例如:
SQL> select to_date(2454000, 'J') from dual;
TO_DATE(245400
--------------
21-9月 -06
SQL> select to_date('2007-9-23 23:25:00','yyyy-mm-dd hh24:mi:ss')
2 from dual;
TO_DATE('2007-
--------------
23-9月 -07
● TO_NUMBER()函数
可以使用TO_NUMBER()函数把某个表达式转变成数字。表达式的格式可以使用可选的格式描述。TO_NUMBER()函数的语法形式如下:
TO_NUMBER(c[,fmt])
例如,下面的示例使用TO_NUMBER()函数实现将16进制数转换为10进制数。
SQL> select to_number('19f','xxx'),to_number('f','xxx')
2 from dual;
TO_NUMBER('19F','XXX') TO_NUMBER('F','XXX')
---------------------- --------------------
415 15
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论