LONG类型长值存储oracle数据库number字段中取值发现不正确

1.页面用户输入银行卡位数比较长,所以服务端用long类型装载。
当存入到oracle数据库中时,查看数据变成了科学记数法标记。(网上说没有指定oracle的number字段长度会就会科学计数超过8位还是9位)。然后问题来了.......
当取出库中字段去前端展示时候,发现最后四位都变成了0,有的是最后追加了10000。

例子:
原始值 123457689098221781
存到库中是科学记数法
再次取值 就成了 123457689098220000 或者 1234576890982210000
(奇怪的是导出excel时候,文件中的卡号都是正确的.....)

才疏学浅....请帮忙看看

0

6个回答

每一个存放数据的地方,不管是数据库中表列,还是应用程序中界面UI,它在展示数据的时候都有长度属性的。就像你这个 long型的数字,有十几位长,在丢失精度的情况下,oracle肯定会用科学计数法的形式 保存。就像在 excel中新建标签页中 你输入18位身份证号,回车默认显示成6.xxxxxxxxxxx*10E2这种形式了。但是字符型的话就不会出现这种情况。就像1楼说的。原始存储类型定义成字符型的,需要在其他地方做数值运算是可以强制转换成数值型

0
qq_34166594
易燃易爆闻一多 问题是,用户手动输入的卡号java用long值接收然后存储到oracle number类型字段中,当取值后发现字段值错误,但是sql中to_char()这个值,java改为String获取。卡号又显示正确了
大约一年之前 回复

银行卡号用VARCHAR类型存储,不要用数值类型。

2

建议去看下关于浮点数据的精度问题,并不是所有的浮点数都可以还原,记得之前看python时候看到过,浮点数有最大精度,也就是小数点后的最大长度,当数据超过这个长度之后就忽略掉了

1

你看一下你的oracle表这一列的数据类型是什么?如果是数字类型的,应该是类似于decimal() 或者 numeric()之类的,如果是这两个类型,会有精度和小数位刻度设置,确保该精度设置能够存储你的数据。

0

银行卡号用数值型是不合适的,建议你用VARCHAR。

0

问题找到了但是暂时不知道解决方法,用long和String或者BigDecimal接受都是正确的卡号,只不过用注解@responsebody 返回给前端时候超出16为的数据都会变为0.

0
qq_34166594
易燃易爆闻一多 回复gf0515: 是js的问题,js处理的数值超过15位就不能显示了,不过后端也是用字符处理了。哎 长脑子了
大约一年之前 回复
gf0515
Fatal Error 回复易燃易爆闻一多: 把这种数据都用String传递,不要使用值类型,@ResponseBody返回String类型就可以了。不明白为什么要用Long类型,这种不会参与数值计算的参数都建议String传递,保证不变性……
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
orcal 数据库的字段是long类型数据提取
String sql = "select * from base_perfpoint t where t.name='住院收入'";         List<Object[]> listSql = systemService.findListbySql(sql);         for (Object[] obj : listSql) {             // Map&lt...
oracle 里面的字段类型为 long,用Java取值
僅此而已(562979545) 1:11:05 请教个问题啊,oracle 里面的字段类型为 long,为什么用out.println(rsl.getString("NEWSCONTENT")); 取值的时候,提示错误是 流已关闭 K┿Or MJ 9:30:33 long 不应该用 getString 去接受啊 。 僅此而已(562979545) 9:52:45 那用...
特性值长文本函数读取的用法(BAPI_CHARACT_GETLONGTEXT)
REPORT zlxy_test. DATA:lt_longtext LIKE STANDARD TABLE OF bapitline WITH HEADER LINE. DATA:lt_return LIKE STANDARD TABLE OF bapiret2 WITH HEADER LINE. DATA:lv_ms(1000). REFRESH lt_longtext. CLEAR lt_longtext. CALL FUNCTION 'BAPI_CHARACT_GETLONGTEXT' EXPO
关于oracle的数据库的数据Long和Number的转化字段
关于number的主键和字符串字段关联时的无效数字的问题
mongo插入long类型数据
mongo如果插入一个很大的整数的话,默认时double类型的。要想插入long类型,则在需要插入的数据前面加上NumberLong()这个函数就可以了。如下代码 db.catalog.insert({ _id:NumberLong(125894171859877899), title:"聊天室", portrait:"www.lanqi.com", create_time:Nu
oracle数据库怎么存储长文本的字段
由于oracle中varchar2最大存储长度是4000,所以存储超过4000字节的文本数据,考虑用clob类型. 例如: 创建包含clob类型的表: create table test ( id int, name clob ); 在clob类型中插入数据(与往varchar2中插入并无区别): insert into test values (1,'TEST'); comm
Java读取Oracle中LONG类型数据
刚刚在工作中遇到的一个问题,数据库是客户方的,我们不能更改。 我在读取某张表的时候,发现,其中的一个字段的类型是LONG(长字符串类型,最大可存储2G的内容), 然后我通过mybatis,查询数据库,自动封装到JavaBean中,用String类型来接受,发现报错(Causedby:java.sql.SQLException:无效的列型:getCLOBnotimplementedf...
oracle Long数据类型总结
--概述 SELECT * FROM t_20160315; 1.存储可变长字符串,最大长度为2G 2.对于超出一定长度的文本,基本上用long型存储,比如数据字典表中的许多字段 SELECT * FROM All_Tab_Cols a WHERE a.data_type='LONG'; 3.long型主要用于不需要字符串搜索操作的长串数据,如果需要字段搜索就需要使用varchar2
Java数据类型转化为Oracle中的Number类型
实例:    double d=1.01;     int i=100;     String str="1001";     oracle.jbo.domain.Number num_i=new Number(d); oracle.jbo.domain.Number num_d=new Number(i); oracle.jbo.domain.Number num_str=new
【inernal】oracle中number类型存储解析
首先需要回答的两个问题。 1、number类型跟指定精度的number类型相比是否浪费存储空间?    number类型不指定精度即相当于设置了number的最大精度(38位)。    number类型的实际存储机制与varchar雷同,即存储多少数据占用多少空间。    number类型下存储的23.23和number(9,3)下存储的23.23都是一样的。    所以绝大多数情况下n
jdbcTemplate判断数据库表中number类型浮点数字段是否为空
直接用rs.getDouble("numField")取数据库表中浮点数字段的值的话, 如果该字段为空, 则会返回0.0, 所以如果要判断是否为空, 则要用rs.getObject("numField")和null做==判断...
Oracle时间戳类型
        Oracle Databse 9i数据库引入了一种新特性,可以存储时间戳。时间戳可以存储世纪、4位年、月、日、时(以24小时格式)、分、秒。与DATE类型相比,时间戳具有以下优点:     ● 时间戳可以存储秒的小数位。     ● 时间戳可以存储时区。     下面介绍时间戳类型。  使用时间戳类型     时间戳有3种类型,如表所示。     表  ...
ElasticSearch 存储long字段,在Kibana上看到的数据不正确问题
传了一个订单数据到ES,ID长这样:2018041817382997796,结果传上去之后,用Kibana查出来之后,ES的ID"_id"是对的,就是2018041817382997796,但是订单数据里的orderId却变成了2018041817382997800??? 就因为这个问题还检查代码,重上数据的找了半天原因。 最终确定原因为Kibana显示数据的问题,增删改查都没有问题,ES也没...
Oracle中如何定义NUMBER类型的长度
iamlaosong文 ORACLE为我们提供了Number数值类型,在10g中,ORACLE又引入了BINARY_FLOAT和BINARY_DOUBLE数据类型。除此之外,还有integer,smallint等数据类型,但这些类型的底层实现依然是NUMBER、BINARY_FLOAT、BINARY_DOUBLE。因此,我们可以认为ORACLE总共为我们提供了三种存储数值的数据类型:NUMBER
oracle字段类型为Date时获取值问题
问题描述: oracle字段类型为Date时,java代码取值只能获取到日期而获取不到时间。 处理: 方法一: 改数据库字段类型为timestamp(这种方式改动数据库字段类型,不推荐使用) 方法二: 代码中使用to_char(columnName,'yyyy-MM-dd hh24:mi:ss')即可...
关于Oracle数据库涉及布尔值的问题
这几天在学着写一个网络商城的小项目 , 遇到一个小问题 , 在数据库中需要用一个字段表示商品是否热销 , 但是在Oracle数据库中没有bool数据类型 . 经过一番思考 , 参考了网友们的意见 , 我是这样来解决这个问题的: 在模型层依然使用boolean 定义变量 , 在数据库中使用number定义字段 , 默认值 0 或者 1. 当取出或者查询有关数据时使用 if 语句判断 , 如果等于
解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题
今天把notice表中的content字段改为long字段后,含有该字段的使用CTE的查询语句报错了。提示一下错误 ### Cause: java.sql.SQLException: 流已被关闭 ; uncategorized SQLException for SQL []; SQL state [99999]; error code [17027]; 流已被关闭; nes...
oracle新增字段时提示数据类型不正确
使用plsql新增字段时,类型填写VARCHAR2(200),plsql报错:数据类型不正确。
js中如果long类型值过长,字段自动截取问题
js代码遇到一个奇怪的问题: id变量的值,和它右边的值不相等。 原来数字类型的字符串,在js中,默认是long类型的。 只需要在后面的字符串加上双引号就可以了,将其显示的表示为字符串。 加了引号之后的效果如下:
JS大坑之17位以后的Number类型数值精度丢失问题
接口返回数据中携带有id字段,如果数值过大,在经过JSON.parse()解析后发现精度丢失。 代码如下: var text = '{"id":18014398509481985}'; var obj = JSON.parse(text); console.log(obj); //结果: {id: 18014398509481984} 解决办法: 后端将ID处理成字符串的形式 前端通过正则,处...
Oracle类型和对应的Java实体类
翻译原文地址: Oracle Database JDBC开发人员指南和参考 QL类型和Java类型之间的默认映射: SQL数据类型 JDBC类型代码 标准的Java类型 Oracle扩展Java类型 1.0标准的JDBC类型: CHAR java.sql.Types.CHAR java.lang.String oracl...
C#读取Oracle的Long Row字段值的问题
最近做一个小程序,功能是把一个软件保存在Oracle11数据表中的人员照片批量导出。保存照片的字段的类型为Long Row格式,代码如下: class ImportPhotos { private const string conn = "Data Source=ds;Password=pw;User ID=user;"; private const st
【Android】探索org.json.JSONObject解析Long数据丢失精度问题
以下所指的JSONObject均为org.json.JSONObject; get系方法和opt系方法区别 get系方法在key不存在时候会抛受检异常(JSONException) opt系方法在key不存在时候会返回默认值 源码: 这里nameValuePairs类型为LinkedHashMap。 getLong或optLong可能导致的长整型精度丢失 通过源码可知, 不...
获得Oracle数据库中,number类型字段的长度
一般Oracle都有对应的调用接口。 如果是jdbc或者odbc,通过获取对应列的precision属性,就能得到。 如果得到的值是-1,也不用担心,其实,可以使用一个较大长度如88完全包含该值,提取时使用string对应即可,不会出现溢出。 如果是oci,你可以使用OCI_NUMBER进行绑定,得到值以后,再根据它是INT还是非INT,进行相应转换,这是有对...
测试两个时间戳长整型(Long)数据相减的问题
    public void test() {         long to = System.currentTimeMillis();         long from =  to - 30*24*3600*1000L;  ////长整型减长整型          long ft =  to - 30*24*3600*1000;  //30*24*3600*1000 == 25920000...
Oracle--JDBC读取Oracle LONG RAW类型字段插入图片
今天在项目中要向Oracle的LONG RAW形字段插入图片,以配合C/S的设计结构 项目中用Hibernate ORM,找了N久没有找到具体操作方法,终于花了2个多小时找到一个JDBC操作的例子,代码改造后为 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce...
Elasticsearch支持的字段类型
es支持下列简单的字段类型: String: string Whole number: byte, short, integer, long Floating point: float, double Boolean: boolean Date: date
oracle中的Number的长度定义
Number可以通过如下格式来指定:Field_NAME Number(precision ,scale),其中precision指Number可以存储的最大数字长度(不包括左右两边的0),scale指在小数点右边的最大数字长度(包括左侧0)。也就是说, p是总长度,s是小数,整数部分长度是p-s 例如: Number(8,2)表示有效数字长度是8,能存储的最大数值是999999.99 ...
elasticsearch由于数据特别长而找不到数据
这是由于mapping中string类型中ignore_above长度的限制 ignore_above 对超过 ignore_above 的字符串,analyzer 不会进行处理;所以就不会索引起来。导致的结果就是最终搜索引擎搜索不到了。这个选项主要对 not_analyzed 字段有用,这些字段通常用来进行过滤、聚合和排序。而且这些字段都是结构化的,所以一般不会允许在这些字段中索引
oracle数据库的long数据类型
这段时间对数据库的基础进行了复习,才发现以前的东西都交给书本了。现在决定对不知道或是不理解的地方,马上记下来。 oracle数据库中的long类型,在使用的过程中,有什么特别的了? 1、long类型的字段,在create table的时候,每个表只能有一个long类型的字段。 2、不能在SQL*Plus中将LONG类型列的数值插入到另一个表格中,如insert in...
修改有数据oracle字段类型 从number转为varchar(转)
转自https://www.cnblogs.com/chenlaichao/p/7753425.html --修改有数据oracle字段类型 从number转为varchar --例:修改ta_sp_org_invoice表中RESCUE_PHONE字段类型,从number转为varchar --step1:增加一个原类型缓冲区字段 alter table ta_sp_org_invoice ...
关于RedisTemplate里存取Long类型
redis里存long类型,会自动转成int类型,取的过程中不能强转成long类型,否则将会类型转换异常,本人处理的时候封装了一个工具类. public <T> T getObject(String key, Class<T> clazz) { Object valueObj = redisTemplate.opsForValue().get(ke...
oracle数据库中关于number数据类型使用时出现的java.sql.SQLException: 数字溢出问题
    最近在做一个项目,里面有一个字段是手机号码,我用的是oracle数据库,对于这个字段我设计成了number类型11位,设计好表后,用navicat测试存取正常。     但是,在写后台代码的存值时,出现java.sql.SQLException: 数字溢出的错误,看了眼我写的实体类,对电话号这一栏设计的数据类型为int,反复测试后得出结论     int类型数据程度小于等于10,jav...
后台的long类型的最大值大于js的number类型
如果后台的long类型的最大值大于js的number类型,就要使用这个注解: @JsonSerialize(using= ToStringSerializer.class)
获取oracle raw数据类型 的字段 的值
使用 JDBC 对oracle的raw数据类型进行操作(CRUD)时, 会发现获取到oracle 的 raw类型  对应  java的 byte[],据我所知 oracle raw数据类型保存的为16进制数。   获取oracle  raw数据类型 的 字段 的值   有三种方式: 第一种: 使用orm框架: hibernate, 写一个映射类与数据表的相关字段进行映射,数据表的raw...
oracle定义字段为number,Java程序里读取为bigDecimal
很多童鞋会疑问,数据库字段里分明存的是不带小数点整型数据,为什么通过Java读取变量类型默认转化成了BigDecimal,为什么强转成Integer、Long都不可以? 对于数值类型来说 oracle     JDBC INTEGER -> short, int, long 是字段情况,一般用long NUMBER -> float, doule, java.math.BigDec
oracle中Number类型总结
1.number(p,s), p:精度位,precision,是总有效数据位数,取值范围是1-38,默认是38,可以用字符*表示38。s:小数位,scale,是小数点右边的位数,取值范围是-84~127,默认值取决于p,如果没有指定p,那么s是最大范围,如果指定了p,那么s=0。 2. number(p)   声明一个整数     number(p,s)  声明一个定点数     num...
oracle中数据类型number(9,2)的意思
9表示这个数据的有效位数(精度),2表示两个小数位(刻度) 例如:1234567.89
Oracle数据库修改Number字段属性
在Oracle数据库中,我们会因为一些需求或其他原因要修改数据库的字段属性,但是直接用语句:alter table TEST_TABLE modify (TEST_AGE NUMBER (3) DEFAULT null ); 会出现以下的错误日志: 这是因为数据库中,该列已经有数据了,我们需要写以下语句就能解决此问题了: --修改原字段名TEST_AGE为TEST_AGE_TMP alt
MyBatise代码自动生成时候Oralce的number类型BigDecimal问题
第一次使用MyBatise发现一个问题,使用MyBatise的代码自动生成工具时候,即便在配置文件中定义了 <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver>  生成之后的实体中number类型转换成JA...

相似问题

1
map中泛型定义的Integer类型,但是数据库查询数据后竟然赋值为Long类型?具体见详情附图
1
java 统计集合中对象的不特定字段的平均值
1
hibernate oracle数据类型为number,值为null,实体类为Long 为什获取到的值为0
4
如何将int类型的时间戳在页面上转换成时间?
1
redmine报错ActiveRecord::StatementInvalid Data too long for column 'content' at row
0
请问如何能够获取并筛选表分区对应的值?
3
关于c++大数的long long类型的中间计算问题,求大佬解,谢谢!!
0
mycat后面连接postgresql数据库,采用xa事务,事务不一致问题,如何解决
0
请问hibernate mysql如何将一个数据库提取出来的Entity作为源保存到另外一个数据库
1
java中char类型的变量默认值显示的很奇怪?
5
java中char类型的默认值到底是什么?
4
unsigned long long相加或者相乘,怎么判断溢出?
1
求助:关于数据库中如何存储一段视频时长的问题?
0
validator实现自定义表单校验的时,注册不通过,但是数据库明显添加了一条记录?求大腿?
0
微信小程序获取云数据库数据后怎么使用这些数据?
2
小白求问 怎么解决 ERROR 1406 (22001): Data too long for column 'gender' at row 1!
2
pb怎样获取数据窗口一个列值,在文本框显示?
2
C语言数据类型在程序中的使用?
1
练习servlet监听器的时候,使用jdbc连接数据库,总是报错,各位老师,我该怎么解决
1
C#怎么读取oracle的long类型数据?