什么数据库?
如果是oracle就不能修改列名!
修改数据类型: alter table modify fieldname fileldtype;

解决方案 »

  1.   

    比方說有張表A,裡面有個字段A1 varchar(5),現在想把它改名為A2
    sp_rename 'A.A1','A2','column';  --將A表中column(列,字段)A1改名為A2
    如果想將表A改名為B,可以這樣:
    sp_rename 'A','B';alter table A alter column A1 varchar(8); --將A表中column(列,字段)A1從
    varchar(5)改到varchar(8)
      

  2.   

    我想改某一列的类型,不如原来是varchar现在改为float
      

  3.   

    你要沒數據才能從
    字符型改到數值型.
    否則比方說
    'hello'改成float
    你說該怎樣?並且如果定義的字段長度全用完的話.
    就不能改小只能改大.
    比如:表A中有字段A1是decimal(6,2)其中有數據1234.50alter table A alter column A1 decimal(5,1);  --這樣會報錯
    alter table A alter column A1 decimal(7,3);  --這樣會成功
      

  4.   

    我得数据库是导过来了,原本是数字得他定义成了字符,我想用sql语句改成浮点型
      

  5.   

    我的话就只有新建一个列,把原来的数据倒过去(用convert),然后再把原来的列删了,不知还有没有高手有更好的办法。
    create procedure pr_modifycolumn @tablename varchar(200) , @columname varchar(200) , @type varchar(100)
    begin
      declare @cmd varchar(8000)
    --加一个临时列
      set @cmd = 'alter table ' + @tablename + 'add column temp_column ' + @type + 'go' 
      exec(@cmd)
    --把数据倒过去,并转化成所需类型
      set @cmd = 'update ' + @tablename + ' set temp_column '+ ' = convert(' + @type + ' , ' + @columname + ')' 
      exec(@cmd)
    --把原来的列删除
      set @cmd = 'alter table ' + @tablename + 'drop column ' + @columname
      exec(@cmd)
    --加一个正确的列
      set @cmd = 'alter table ' + @tablename + 'add column ' + @columname + @type + ' go '
      exec(@cmd)
    --把数据倒进来
      set @cmd = 'update ' + @tablename + ' set ' + @columname + ' = temp_column '
      exec(@cmd)
    --删除临时列。
      set @cmd = 'alter table ' + @tablename + 'drop column temp_column ' 
    end
    大概这样就可以吧,试一试,实际用时最好加上异常处理。
      

  6.   

    alter table A drop column A1;