我有一个带有2列的oracle表,它们都使用NUMBERS数据类型,当我输入任何以0开头的数字时它会删除0.所以解决方法是将数据类型更改为VARCHAR2。我有一个脚本
但是我遇到了一个问题。复制表时,之前截断的任何数据都保持这种状态,无论如何我可以在旧数据的开头添加0吗?下面是我创建的脚本。
/* create a new table named temp */
CREATE TABLE TEMP_TABLE
(
IMEISV_PREFIX VARCHAR2(8),
IMEI_FLAG NUMBER(2),
CONSTRAINT IMEIV_PK PRIMARY KEY (IMEISV_PREFIX)
);
/* copy everything from the old table to the new temp table */
INSERT INTO TEMP_TABLE
SELECT * FROM REF_IMEISV_PREFIX;
/* Delete the original table */
DROP TABLE REF_IMEISV_PREFIX;
/* Rename the temp table to the original table */
RENAME TEMP_TABLE TO REF_IMEISV_PREFIX;
答案 0 :(得分:2)
不,没有。当Oracle将数据保存到数据库时,它会以当时的格式保存数据。所有其他信息都已删除。无法恢复历史数据。
事实上,当你以前将数据存储到数据库时,假设你这样做:
insert into tableX (anumber) values ('01');
事实上确实如此:
insert into tableX (anumber) values (to_number('01'));
所以它从一开始就丢失了。 (请注意,该示例实际上是一个坏习惯!您不应该依赖于在数据库中进行强制转换,始终将数据移交给正确的数据类型!)
答案 1 :(得分:1)
如果您需要显示前导零,则问题是接口问题,而不是数据库问题。您可以格式化输出以显示您想要多少前导零。
如果数据是数字,请按原样使用。