oracle中number型字段长度、精度及实际存储状态测试

2024-02-26 08:48

本文主要是介绍oracle中number型字段长度、精度及实际存储状态测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

工作中经常要遇到这种字段的处理情况,当然以前也见过大虾总结过。但是看了之后,又还给人家。是人家的终究还是人家的,需要自己亲自测试并总结才能变成自己的。

相关知识回顾:
有效数位:从左边第一个不为0的数算起,小数点和负号不计入有效位数。
number(p,s)
      p:1~38
      s:-84~127
p>0,对s分2种情况:
1. s>0
        精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。
2. s<0
        精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|

      案例测试:
hongsy@test>desc hongsy;
 名称                                                  是否为空? 类型
 ----------------------------------------------------- -------- ------------
 NUM1                                                           NUMBER
 NUM2                                                           NUMBER(2)
 NUM3                                                           NUMBER(5,3)
 NUM4                                                           NUMBER(5,-2)
hongsy@test>insert into hongsy(num1) values(1111111111);
已创建 1 行。
hongsy@test>commit;
提交完成。
hongsy@test>insert into hongsy(num2) values(11);
已创建 1 行。
hongsy@test>insert into hongsy(num2) values(111);
insert into hongsy(num2) values(111)
                                *
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度

hongsy@test>insert into hongsy(num2) values(-11);
已创建 1 行。
hongsy@test>insert into hongsy(num2) values(-111);
insert into hongsy(num2) values(-111)
                                *
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度

hongsy@test>insert into hongsy(num2) values(-11.1);
已创建 1 行。
hongsy@test>insert into hongsy(num2) values(-11.1111);
已创建 1 行。
hongsy@test>commit;
提交完成。
hongsy@test>select num2 from hongsy;
NUM2
----------

        11
       -11
       -11
       -11
已选择8行。
hongsy@test>insert into hongsy(num3) values(111);
insert into hongsy(num3) values(111)
                                *
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度

hongsy@test>insert into hongsy(num3) values(11);
已创建 1 行。
hongsy@test>insert into hongsy(num3) values(-11);
已创建 1 行。
hongsy@test>insert into hongsy(num3) values(-111);
insert into hongsy(num3) values(-111)
                                *
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度

hongsy@test>insert into hongsy(num3) values(11.111);
已创建 1 行。
hongsy@test>insert into hongsy(num3) values(11.1111);
已创建 1 行。
hongsy@test>commit;
提交完成。
hongsy@test>select num3 from hongsy;
NUM3
----------

        11
       -11
    11.111
    11.111
已选择12行。
hongsy@test>insert into hongsy(num4) values(1111);
已创建 1 行。
hongsy@test>insert into hongsy(num4) values(111111);
已创建 1 行。
hongsy@test>insert into hongsy(num4) values(11111111);
insert into hongsy(num4) values(11111111)
                                *
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度

hongsy@test>commit;
提交完成。
hongsy@test>select num4 from hongsy;
NUM4
----------

      1100
    111100
已选择14行。
hongsy@test>insert into hongsy(num4) values(1111111);
已创建 1 行。
hongsy@test>commit;
提交完成。
hongsy@test>select num4 from hongsy;
NUM4
----------

      1100
    111100
   1111100
已选择15行。
hongsy@test>create table hongsy1 (num1 number(39));
create table hongsy1 (num1 number(39))
                                  *
ERROR 位于第 1 行:
ORA-01727: 数字精度说明符超出范围(1 到 38)

hongsy@test>create table hongsy1 (num1 number(38,128));
create table hongsy1 (num1 number(38,128))
                                     *
ERROR 位于第 1 行:
ORA-01728: 数字标度说明符超出范围(-84 到 127)

这篇关于oracle中number型字段长度、精度及实际存储状态测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748297

相关文章

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.