alter table 表 alter column 列 float(8)  --*------yi tf b

解决方案 »

  1.   

    如果上面語句有錯,用下面的檢測一下
    select  *  from 表  where isnumeric(列)=0  ----檢測不是數字形的
      

  2.   

    /*--将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程--邹建 2004.02(引用请保留此信息)--*/  
     
    /*--调用示例:  
               exec  p_set  
    --*/  
    if  exists  (select  *  from  dbo.sysobjects  where  id  =  object_id(N'[dbo].[p_set]')  and  OBJECTPROPERTY(id,  N'IsProcedure')  =  1)  
    drop  procedure  [dbo].[p_set]  
    GO  
     
    create  procedure  p_set  
    as  
    declare  tb  cursor  for  
    SELECT  sql='alter  table  ['+d.name  
               +']  alter  column  ['+a.name+']  n'  
               +b.name+'('+cast(a.length*2  as  varchar)+')'  
    FROM  syscolumns  a  
               left  join  systypes  b  on  a.xtype=b.xusertype  
               inner  join  sysobjects  d  on  a.id=d.id    and  d.xtype='U'  and    d.name<>'dtproperties'  
    where    
               b.name  in('char','varchar')  
               and    
               not  exists(SELECT  1  FROM  sysobjects  where  xtype='PK'  and  name  in  (  
                           SELECT  name  FROM  sysindexes  WHERE  indid  in(  
                                       SELECT  indid  FROM  sysindexkeys  WHERE  id  =  a.id  AND  colid=a.colid  
                           )))                        --主键不能修改  
    order  by  d.name,a.name  
     
    declare  @sql  varchar(1000)  
    open  tb  
    fetch  next  from  tb  into  @sql  
    while  @@fetch_status  =  0  
    begin  
               exec(@sql)  
               fetch  next  from  tb  into  @sql  
    end  
    close  tb  
    deallocate  tb  
    go