PL/SQL 查询结果采用科学计数法,如何改变属性。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PL/SQL 查询结果采用科学计数法,如何改变属性。相关的知识,希望对你有一定的参考价值。

我的是PL/SQL6.0,查询出的结果是用的科学计数法,例如3.20006000009452E17,其实这个数值应该是文本格式,320006000009452000。我应该在哪里改变属性呢?

参考技术A 方法一:select TO_CHAR(列名,格式)。。。。。。。用类型转换。
方法二:改变列类型,需要删除数据,改变类型后,重新导入数据。危险哦。本回答被提问者采纳

解决python查询数据库字段为decimal类型的数据结果为科学计数法的问题

解决python查询数据库字段为decimal类型的数据结果为科学计数法的问题

select CAST(u.amount  AS CHAR) from user u

CAST(u.amount AS CHAR) ;u.amount: Decimal类型的字段

这样查询出来的数据就不会是科学计数法了,但是查出来的数据类型就转成了字符串类型了

验证

准备数据库数据

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for amount
-- ----------------------------
DROP TABLE IF EXISTS `amount`;
CREATE TABLE `amount`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `amount` decimal(65, 15) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of amount
-- ----------------------------
INSERT INTO `amount` VALUES (1, ‘desire‘, 14.025415550000000);
INSERT INTO `amount` VALUES (2, ‘ronin‘, 0.253698741550000);
INSERT INTO `amount` VALUES (3, ‘tom‘, 0.000000000000005);
INSERT INTO `amount` VALUES (4, ‘aaa‘, 0.000000000000785);

SET FOREIGN_KEY_CHECKS = 1;

Python查询

1、连接数据库,创建连接

import pymysql

con = pymysql.connect(host=‘localhost‘,
                      user="root",
                      password="123456",
                      port=3306,
                      charset=‘utf8‘)
cur = con.cursor()

2、使用 * 查询所有的数据

sql = "SELECT * FROM desire.amount a"
cur.execute(sql)
users = cur.fetchall()
print(users)

2.1、打印结果

((1, ‘desire‘, Decimal(‘14.025415550000000‘)), (2, ‘ronin‘, Decimal(‘0.253698741550000‘)), (3, ‘tom‘, Decimal(‘5E-15‘)), (4, ‘aaa‘, Decimal(‘7.85E-13‘)))

2.2 分析结果:从上面的打印结果可以看到,如果小数位过长,打印出来的数据就会变成科学计数法的形式打印,这样的数据看起来不是很清晰。

3、使用CAST() SQL函数,把Decimal类型的字段转成字符串显示

sql = "SELECT a.id,a.name,CAST(a.amount  AS CHAR) FROM desire.amount a"
cur.execute(sql)
users = cur.fetchall()
print(users)

3.1 打印结果

((1, ‘desire‘, ‘14.025415550000000‘), (2, ‘ronin‘, ‘0.253698741550000‘), (3, ‘tom‘, ‘0.000000000000005‘), (4, ‘aaa‘, ‘0.000000000000785‘))

3.2 分析结果:这样打印出来的数据,就跟数据库存放的一致了,数据比对起来也是正确的,很清晰

4、经过这样处理,比对数据就显得稍微清晰一点,不会混杂着科学计数法的数据了。

以上是关于PL/SQL 查询结果采用科学计数法,如何改变属性。的主要内容,如果未能解决你的问题,请参考以下文章

sql 科学计数法显示结果 怎么处理

PL/SQL的基本语法

PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法

PL/SQL循环查询语句怎么写?

Oracle PL/SQL查询结果如何自动换行

Oracle PL/SQL查询结果如何自动换行