oracle中,用啥数据类型表示货币的数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中,用啥数据类型表示货币的数据类型相关的知识,希望对你有一定的参考价值。

Oracle中的数据类型有:字符型、数字型、日期型等。具体介绍如下:

字符型:

char(n):用于标识固定长度的字符串。

当实际数据不足定义长度时,使用空格补全右边不足位。varchar(n):可变字符串类型。

为SQL标准规定的,数据库必须实现的数据据类型。可以存储空字符串。

varchar2(n):可变字符串类型,是oracle在varchar的基础上自行定义的可变长度字符串类型。当做为列类型使用时,最大长度可被定义为4000;当做为变量类型使用时,长度可被定义为32767。不可以存储空字符串。

扩展资料:

数据元一般由对象类、特性和表示3部分组成:

(1)对象类(Object Class)。是现实世界或抽象概念中事物的集合,有清楚的边界和含义,并且特性和其行为遵循同样的规则而能够加以标识。

(2)特性(Property)。是对象类的所有个体所共有的某种性质,是对象有别于其他成员的依据。 

(3)表示(Representation)。是值域、数据类型、表示方式的组合,必要时也包括计量单位、字符集等信息。

对象类是我们所要研究、收集和存储相关数据的实体,例如人员、设施、装备、组织、环境、物资等。特性是人们用来区分、识别事物的一种手段,例如人员的姓名、性别、身高、体重、职务,坦克的型号、口径、高度、长度、有效射程等。

表示是数据元被表达的方式的一种描述。表示的各种组成成分中,任何一个部分发生变化都将产生不同的表示,例如人员的身高用“厘米”或用“米”作为计量单位,就是人员身高特性的两种不同的表示。

参考资料来源:百度百科-数据元



参考技术A Number默认情况下,精度为38位,取值范围1~38之间。
它实际上是磁盘上的一个变长类型,会占用0~22 字节的存储空间。
存储货币值是没有问题的。
参考技术B 用number类型
number(20,8)

Mysql中设置小数点用啥数据类型 decimal

mysql中小数点用decimal(x,y)进行存储,

示例如下,

1、创建测试表,create table test_decimal(id int, fee_value decimal(20,3));

2、插入测试数据,

insert into test_decimal values(1,12.2);

insert into test_decimal values(3,33.789);

insert into test_decimal values(6666,555.332);

3、查询表中所有记录,select * from test_decimal t;

4、小数转整,可以用floor或round函数,select t.*, floor(fee_value) as fee1, round(fee_value) fee2 from test_decimal t;

参考技术A 同事问MySQL数据类型DECIMAL(N,M)中N和M分别表示什么含义,M不用说,显然是小数点后的小数位数,但这个N究竟是小数点之前的最大位数,还是加上小数部分后的最大位数?这个还真记不清了。于是乎,创建测试表验证了一番,结果如下:
测试表,seller_cost字段定义为decimal(14,2)
CREATE TABLE `test_decimal` (
`id` int(11) NOT NULL,
`seller_cost` decimal(14,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf81234

起初,表中内容为空
mysql> select * from test_decimal;
Empty set (0.00 sec)12

插入整数部分长度为14的数字,报超出列范围的错误
mysql> insert into test_decimal(id,seller_cost) values(1,12345678901234);
ERROR 1264 (22003): Out of range value for column 'seller_cost' at row 112

插入整数部分长度为12的数字,可以正确插入
参考技术B Decimal(n,m)表示数值中共有n位数,其中整数n-m位,小数m位。例:decimal(10,6),数值中共有10位数,其中整数占4位,小数占6位。
例:decimal(2,1),此时,插入数据“12.3”、“12”等会出现“数据溢出错误”的异常;插入“1.23”或“1.2345...”会自动四舍五入成“1.2”;插入“2”会自动补成“2.0”,以确保2位的有效长度,其中包含1位小数。

p (有效位数)
可储存的最大十进位数总数,小数点左右两侧都包括在内。有效位数必须是 1 至最大有效位数 38 之间的值。预设有效位数是 18。
s (小数位数)
小数点右侧所能储存的最大十进位数。小数位数必须是从 0 到 p 的值。只有在指定了有效位数时,才能指定小数位数。预设小数位数是 0;因此,0 <= s <= p。最大储存体大小会随著有效位数而不同。
参考技术C 要求精度高就用decimal

审题错了...
简单写下区别:
float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)

numberic === decimal

float f = 345.98756f;//结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。
double d=345.975423578631442d;//结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。
注:float和double的相乘操作,数字溢出不会报错,会有精度的损失。
decimal dd=345.545454879.....//可以支持28位,对最后一位四舍五入。
注:当对decimal类型进行操作时,数值会因溢出而报错。本回答被提问者采纳
参考技术D 用decimal,精度高

以上是关于oracle中,用啥数据类型表示货币的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver的bit类型在oracle中可以用啥类型表示

oracle int用啥类型

sql server 货币 字段 类型 一般用啥类型?

oracle 对于大文本数据用啥类型

java中手机号码用啥数据类型表示?

表示0或1用啥数据类型