如何在oracle中将数字(7,2)更改为varchar?

时间:2012-06-24 12:44:33

标签: sql oracle

我正在使用Oracle 10g。我想将#附加到'sal'列中的所有值。为了完成这个,我首先尝试将'sal'列的数据类型从numeric更改为varchar,但是会出现以下错误 enter image description here

我做错了什么?

2 个答案:

答案 0 :(得分:11)

您应该使用modify关键字而不是第二个alter

alter table
   emp
modify
(
   sal    varchar2(10)
);

修改表列数据类型时,需要使用modify关键字。

当然,您必须处理现有的列数据。修改表列数据类型时,您可能希望导出行,重新定义表,然后重新导入数据。

在此,您需要按照以下步骤更改列数据类型:

  1. 在表格末尾创建新列。
  2. 运行更新以填充新表格列
  3. 删除旧表格列
  4. 将新列重命名为原始列名称

答案 1 :(得分:3)

通过附加一个字符串来获取一个非常好的数字并破坏用户的其余部分似乎并不是一个明智的想法。 只需在选择中直接或通过视图添加字符串?

类似的东西:

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

More on format models