今天下午,自己做东西时,发现个小问题,当时建立数据表的时候,把course的course_credit字段建为了number(2)型,这导致了输入类似于:4.5时,精度丢失,打算改表字段的类型,可是该字段有大量数据,在网上找了一圈,结合自己的思考想了个解决方案,如下所示
-- course表的course_credit字段的类型需要从number(2)改为number(2,1),可是该字段有数据
-- 1. 将数据备份到零时表
CREATE GLOBAL TEMPORARY TABLE my_temp_table ON COMMIT PRESERVE ROWS
AS SELECT c.id,c.course_credit FROM course c;
-- 2. 将要修改精度的字段设为“NULL”,等价于删除该字段的所有记录
UPDATE course c SET c.course_credit = NULL;
-- 3. 修改course表,course_credit字段的类型改为number(2,1)
ALTER TABLE course MODIFY course_credit NUMBER(2,1);
-- 4. 将备份数据恢复回原表
SET c.course_credit = ( SELECT t.course_credit FROM my_temp_table t WHERE t.id = c.id )
WHERE EXISTS( SELECT 1 FROM my_temp_table t WHERE t.id = c.id );
-- 5. 删除零时表 my_temp_table
TRUNCATE TABLE my_temp_table;
DROP TABLE my_temp_table;
不知道,这种操作方案,在以后实际的实际生产项目是否可行,求交流、指导
分享到:
相关推荐
**示例**:修改`test1`表中的`name`字段,将其数据类型改为`VARCHAR2(16)`,默认值改为`'unknown'`。 ```sql ALTER TABLE test1 MODIFY (name VARCHAR2(16) DEFAULT 'unknown'); ``` 如果修改后的数据类型与原有...
Oracle 数据库字段值自动加 1 Oracle 数据库中,字段值自动加 1 是一个常见的需求,特别是在数据插入时需要自动生成唯一标识符的情况下。下面将详细介绍如何实现 Oracle 数据库字段值自动加 1。 首先,需要创建一...
例如,如果你有一个NUMBER类型的字段,想将其转换为VARCHAR2类型,可以使用以下语句: ```sql SELECT CAST(column_name AS VARCHAR2(20)) FROM table_name; ``` 这里,`VARCHAR2(20)`指定了转换后的字符串长度。 2....
### Oracle数据库字段类型详解 #### 字符串类型 **Char** `CHAR` 数据类型用于存储固定长度的字符值。它可以包含1至2000个字符。如果没有明确规定长度,默认长度为1。当向`CHAR` 类型的字段赋值时,如果实际值...
### 更改Oracle表中字段顺序的方法 在Oracle数据库管理中,有时我们可能需要对表中的字段顺序进行调整。然而,通常的做法是通过备份、删除原表并重建来达到这一目的,这种方法不仅耗时而且繁琐。幸运的是,经过一番...
is_number(oracle函数判断字段是否合法数字)
alter table test1 add (name varchar2(30) default ‘无名氏' not null, age integer default 22 not null, has_money number(9,2)); ``` 然而,当你需要调整已有字段的顺序时,Oracle并没有直接提供修改字段顺序...
### Oracle数据库表中修改字段顺序的方法 在Oracle数据库中,我们常常会遇到需要调整表中字段顺序的情况。例如,为了优化查询效率或是更好地符合业务逻辑,我们可能希望更改某些字段的位置。在过去,如果想要改变一...
### Oracle查询指定表的所有字段名和数据类型SQL 在Oracle数据库管理中,有时我们需要了解某个特定表的所有字段名称以及它们对应的数据类型等信息。这对于理解表结构、进行数据迁移或编写更为精确的SQL语句非常有...
Oracle 中的 NUMBER 类型可以对应 DB2/400 中的多种类型,这种对应关系要依赖于 Oracle 中 number 将用于保存何种类型的数据,是整型还是带有小数位的实型数据。例如,Oracle 中的 NUMBER 类型可以对应 DB2/400 中的...
在数据库设计过程中,PowerDesigner 和 Oracle 之间的字段对应关系是至关重要的,因为它直接影响到数据的存储和处理。PowerDesigner 是一款强大的数据建模工具,它允许用户创建概念数据模型(CDM)和物理数据模型...
完成以上步骤后,`test_skate`表中的`ID`字段类型就已经成功地从`NUMBER`更改为`VARCHAR2(50)`了。 #### 四、注意事项 1. **备份数据**:在进行任何重大更改之前,强烈建议先备份数据,以防万一出现问题可以恢复...
根据提供的信息,本文将详细介绍如何在Oracle数据库中将某个字段的多行记录转换为一行记录的方法。这种方法在处理大量数据时非常有用,特别是在需要将多个值汇总到一个字段中的场景下。 ### 标题理解:“oracle某个...
* 数据表中每个列都有其自己的数据类型,例如学生 ID 为 NUMBER,学生姓名为 VARCHAR2。 3. 数据查询 * 在 Oracle 数据库中,我们可以使用 SELECT 语句来查询数据。例如,查询某个班级的所有学生信息。 * 我们可以...
在Oracle数据库中,字段类型是定义表结构的关键部分,它决定了数据的存储方式和容量。以下是对Oracle中一些主要字段类型的详细说明: 1. **CHAR**:这是一个固定长度的字符串类型,最大长度为2000字节。无论实际...
根据提供的描述“oracle字段去重 以某一个字段去重”,可以理解为在某个表中基于特定字段进行去重处理。这里的关键在于如何有效地针对指定的字段进行去重操作。 #### 三、去重方法详解 ##### 3.1 使用DISTINCT...
最终,通过`to_number`函数将结果转换为数值类型,确保即使字段中存在非数字字符,也能正确地被识别为0。 ### 三、示例演示 假设`table`表中的`column_name`字段包含以下数据: | column_name | |-------------| ...
现在我们需要从这些数据中找出那些在`name`、`idNumber`以及`date`这三个字段上存在重复的数据,并且每组重复数据只保留一条记录。 ### 2. 使用`ROW_NUMBER()`函数与`PARTITION BY`子句 为了实现上述需求,可以...
Oracle 字段类型详解 Oracle 字段类型是数据库设计的基础,了解这些类型可以帮助开发者更好地设计数据库结构。下面是 Oracle 中常用的字段类型的详解: 1. CHAR(size):定长字符串类型,用于保存定长的字符串数据...