Sql 如何在oracle中将数字(7,2)更改为varchar?
我正在使用Oracle 10g。我想附加到'sal'列中的所有值。为了实现这一点,我首先尝试将'sal'列的数据类型从numeric更改为varchar,但出现以下错误 我做错了什么?你应该使用modify关键字而不是第二个alter 修改表列数据类型时,需要使用modify关键字 当然,您必须处理现有的列数据。修改表列数据类型时,可能需要导出行,重新定义表,然后重新导入数据 在这种情况下,您需要按照以下步骤更改列数据类型: 在表的末尾创建新列。 运行更新以填充新表列 删除旧表列 将新列重新命名为原始列名Sql 如何在oracle中将数字(7,2)更改为varchar?,sql,oracle,Sql,Oracle,我正在使用Oracle 10g。我想附加到'sal'列中的所有值。为了实现这一点,我首先尝试将'sal'列的数据类型从numeric更改为varchar,但出现以下错误 我做错了什么?你应该使用modify关键字而不是第二个alter 修改表列数据类型时,需要使用modify关键字 当然,您必须处理现有的列数据。修改表列数据类型时,可能需要导出行,重新定义表,然后重新导入数据 在这种情况下,您需要按照以下步骤更改列数据类型: 在表的末尾创建新列。 运行更新以填充新表列 删除旧表列 将新列重新命
通过附加一段字符串来获取一个非常好的数字并毁掉其他用户,这似乎不是一个明智的想法。 直接或通过视图将字符串添加到select上 比如:
SQL> create view emp_horked
as
select ename, sal, sal || '#' hash, to_char(SAL,'9999.99') || '#' sal_padded
from emp;
View created.
SQL> select * from emp_horked where rownum < 5;
ENAME SAL HASH SAL_PADDE
---------- ---------- ----------------------------------------- ---------
SMITH 800 800# 800.00#
ALLEN 1600 1600# 1600.00#
WARD 1250 1250# 1250.00#
JONES 2975 2975# 2975.00#
对于to_char这是有效的,但在第5行:ORA-01439:要修改的列中给出错误“error”必须为空才能更改数据类型“@严重:请参阅编辑。出现错误是因为该表中已有数据。to_charSAL,“9999.99”| | sal| u填充的目的是什么?我的意思是最后一列的用途是什么?最后一列尝试解决您的请求:我想附加到“sal”列中的所有值。我想我误解了这个问题。按照我的阅读方式,您希望将其更改为varchar,以便向其中添加字符。这似乎很奇怪,似乎会降低数据的有用性。现在我想你选择了一个不幸的例子。我曾经有一位客户,他有6字节的数字订单号,希望在保留6列的同时存储更多的值。所以他们想改为varchar,以便能够将alpha字符添加到序列中。这似乎是合理的。
SQL> create view emp_horked
as
select ename, sal, sal || '#' hash, to_char(SAL,'9999.99') || '#' sal_padded
from emp;
View created.
SQL> select * from emp_horked where rownum < 5;
ENAME SAL HASH SAL_PADDE
---------- ---------- ----------------------------------------- ---------
SMITH 800 800# 800.00#
ALLEN 1600 1600# 1600.00#
WARD 1250 1250# 1250.00#
JONES 2975 2975# 2975.00#