Oracle_中to_char和to_number等格式处理
2013-06-04 16:39
239 查看
oracle to_number、to_char介绍
to_number(文字,’格式’)
to_char(数字, ‘格式’)
to_char()这次只介绍to_char(数字, ‘格式’),明天介绍日期转化的。
主要格式如下:
9 表示有效位数
0 数字前用0补足位数
B 用空格补足位数
$ 在数字前加美元号
L 在数字前加本地货币符号
. 小数点位置
, 分格符位置
MI 负数时在最后边加负号
PR 负数用<>括起来
S 在前面加符号
EEEE 科学计数法
V 把原数字乘以10的N次方(N为V后面的位数)
to_number函数如下:
在垃圾短信项目中,用到了to_number方法,表中starttime字段存的是某一时间到1994年1月1日
00:00:00的秒数,字段类型为RAW,由于项目的原因,要涉及到改字段的时间比较。考虑了半天,将某一时间到1994年1月1日
00:00:00的秒数传入当做参数,然后将starttime转换成16进制,再通过to_number转换成数字,然后再比较。SQL语句如下:
select * from black_user_info where TO_NUMBER(rawtohex(starttime),'XXXXXXXX') >496022400;
但是经过测试发现 select * from black_user_info where TO_NUMBER(starttime,'XXXXXXXX') >496022400
好像也有同样的效果。raw类型和16进制有很密切的关系,因为在数据库里面,数字的raw类型就是按照16进制保存的,具体的关系就不是很清楚了,目前基本上一个ORACLE盲。
1. 9, 0
,B 测试
SELECT
to_char(123.45,'0009.9'),
to_char(123.45,'9999.9'),
to_char(123.45,'B999.9')
FROM dual;
结果为
TO_CHAR(123.45,'0009.9') TO_CHAR(123.45,'9999.9') TO_CHAR(123.45,'B999.9')
------------------------ ------------------------ ------------------------
0123.5 123.5 123.5
2. $, L
测试
SELECT
to_char(123.45,'$9999.9'),
to_char(123.45,'L9999.9')
FROM dual;
结果为
TO_CHAR(123.45,'$9999.9') TO_CHAR(123.45,'L9999.9')
------------------------- -------------------------
$123.5 ¥123.5
3. .,,
测试
SELECT
to_char(123.45,'9999.99'),
to_char(1233123.45,'9,999,999.99')
FROM dual;
结果为
TO_CHAR(123.45,'9999.99') TO_CHAR(1233123.45,'9,999,999.
------------------------- ------------------------------
123.45 1,233,123.45
4. MI,PR
测试
SELECT
to_char(-123.45,'9999.99MI'),
to_char(-123.45,'9999.99PR')
FROM dual;
结果为
TO_CHAR(-123.45,'9999.99MI') TO_CHAR(-123.45,'9999.99PR')
---------------------------- ----------------------------
123.45- <123.45>
5. S,EEEE,V
测试
SELECT
to_char(123.45,'S9999.99'),
to_char(12345,'99.99EEEE'),
to_char(123,'9999V99')
FROM dual;
结果为
TO_CHAR(123.45,'S9999.99') TO_CHAR(12345,'99.99EEEE') TO_CHAR(123,'9999V99')
-------------------------- -------------------------- ----------------------
+123.45 1.23E+04 12300
原文链接:http://wenku.baidu.com/view/e6a9488d84868762caaed5d3.html
to_number(文字,’格式’)
to_char(数字, ‘格式’)
to_char()这次只介绍to_char(数字, ‘格式’),明天介绍日期转化的。
主要格式如下:
9 表示有效位数
0 数字前用0补足位数
B 用空格补足位数
$ 在数字前加美元号
L 在数字前加本地货币符号
. 小数点位置
, 分格符位置
MI 负数时在最后边加负号
PR 负数用<>括起来
S 在前面加符号
EEEE 科学计数法
V 把原数字乘以10的N次方(N为V后面的位数)
to_number函数如下:
Converts a string to the NUMBER data type | TO_NUMBER(<value>[, <format>, <NLS parameter>]) RETURN NUMBER |
CREATE TABLE test ( testcol VARCHAR2(10)); INSERT INTO test VALUES ('12345.67'); SELECT TO_BINARY_DOUBLE(testcol) BIN_DOUBLE, TO_BINARY_FLOAT(testcol) BIN_FLOAT, TO_NUMBER(testcol) NMBR FROM test; | |
Converts a HEX number to FLOAT | TO_NUMBER(<value>, <format>); |
SELECT TO_NUMBER('0A', 'XX') FROM dual; | |
Converts a HEX number to DECIMAL | TO_NUMBER(<binary_float | binary_double | number>, '<hex mask>') RETURN <binary_float | binary_double | number>; |
SELECT TO_NUMBER(100000,'XXXXXXXX') FROM dual; |
00:00:00的秒数,字段类型为RAW,由于项目的原因,要涉及到改字段的时间比较。考虑了半天,将某一时间到1994年1月1日
00:00:00的秒数传入当做参数,然后将starttime转换成16进制,再通过to_number转换成数字,然后再比较。SQL语句如下:
select * from black_user_info where TO_NUMBER(rawtohex(starttime),'XXXXXXXX') >496022400;
但是经过测试发现 select * from black_user_info where TO_NUMBER(starttime,'XXXXXXXX') >496022400
好像也有同样的效果。raw类型和16进制有很密切的关系,因为在数据库里面,数字的raw类型就是按照16进制保存的,具体的关系就不是很清楚了,目前基本上一个ORACLE盲。
1. 9, 0
,B 测试
SELECT
to_char(123.45,'0009.9'),
to_char(123.45,'9999.9'),
to_char(123.45,'B999.9')
FROM dual;
结果为
TO_CHAR(123.45,'0009.9') TO_CHAR(123.45,'9999.9') TO_CHAR(123.45,'B999.9')
------------------------ ------------------------ ------------------------
0123.5 123.5 123.5
2. $, L
测试
SELECT
to_char(123.45,'$9999.9'),
to_char(123.45,'L9999.9')
FROM dual;
结果为
TO_CHAR(123.45,'$9999.9') TO_CHAR(123.45,'L9999.9')
------------------------- -------------------------
$123.5 ¥123.5
3. .,,
测试
SELECT
to_char(123.45,'9999.99'),
to_char(1233123.45,'9,999,999.99')
FROM dual;
结果为
TO_CHAR(123.45,'9999.99') TO_CHAR(1233123.45,'9,999,999.
------------------------- ------------------------------
123.45 1,233,123.45
4. MI,PR
测试
SELECT
to_char(-123.45,'9999.99MI'),
to_char(-123.45,'9999.99PR')
FROM dual;
结果为
TO_CHAR(-123.45,'9999.99MI') TO_CHAR(-123.45,'9999.99PR')
---------------------------- ----------------------------
123.45- <123.45>
5. S,EEEE,V
测试
SELECT
to_char(123.45,'S9999.99'),
to_char(12345,'99.99EEEE'),
to_char(123,'9999V99')
FROM dual;
结果为
TO_CHAR(123.45,'S9999.99') TO_CHAR(12345,'99.99EEEE') TO_CHAR(123,'9999V99')
-------------------------- -------------------------- ----------------------
+123.45 1.23E+04 12300
原文链接:http://wenku.baidu.com/view/e6a9488d84868762caaed5d3.html
相关文章推荐
- oracle数据库 中to_number、to_char、to_date用法介绍
- oracle 中to_char、to_number、to_date的用法解析
- oracle数据库 中to_number、to_char、to_date用法介绍
- Oracle中对number类型数据to_char()出现各位少0,或者值为###的处理
- oracle 日期格式(to_char和to_date)
- oracle中to_char、to_number、to_date精要讲解
- oracle 中to_char 和to_date函数
- [SQL]oracle 的to_char、to_number、to_date用法
- Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理
- mysql中对应oracle中的to_char()和to_number()函数
- Oracle中时间格式在TO_DATE与TO_CHAR中的应用
- oracle 常用轉換函數(to_char,to_date,to_number)
- oracle 日期格式 to_date to_char
- oracle、sqlserver、mysql常用函数对比[to_char、to_number、to_date]
- oracle 的to_char、to_number、to_date用法
- oracle、sqlserver、mysql常用函数对比[to_char、to_number、to_date]
- Oracle DB TO_CHAR、TO_DATE、TO_NUMBER 函数
- Oracle SQL: TO_CHAR and TO_NUMBER 笔记
- oracle 的to_char、to_number、to_date用法
- Oracle使用to_char,to_number,to_date转换函数