admin 管理员组

文章数量: 1086019


2024年5月6日发(作者:c语言中如何定义标识符)

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([, , ]) RETURN NUMBER

CREATE TABLE test (

testcol VARCHAR2(10));

Converts a string to the

NUMBER data type

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(, );

SELECT TO_NUMBER('0A', 'XX')

FROM dual;

TO_NUMBER(,

Converts a HEX number

'') RETURN ;

to DECIMAL

SELECT TO_NUMBER(100000,'XXXXXXXX')

FROM dual;

在垃圾短信项目中,用到了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;

结果为


本文标签: 数字 字段 类型