none
Sql Server 2005 中,如何通过语句更改已有数据的列的数据类型 RRS feed

  • 问题

  • 如题所示,已经尝试过ALTER TABLE TableName
    ALTER COLUMN  columnNmae float  null 语句。 点击执行后 告我执行成功 但我到表里看 数据类型并没有发生改变。

    只能在表设计器里手动更改,可我要改的表很多,这样很麻烦。

    请问是我的语句哪里不对吗? 有其他方案吗?


    shan423
    2011年11月11日 2:25

答案

  • 看起來你的T-SQL沒錯,我剛以下列的程式碼來模擬你的狀況,或許你可以用sp_help檢查看看欄位的資料型態。

    use tempdb
    go
    
    create table t1 (c1 int)
    exec sp_help t1
    
    insert into t1 values(1),(2),(3)
    
    alter table t1 alter column c1 float null
    exec sp_help t1
    
    drop table t1
    


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    • 已标记为答案 shan423 2011年11月11日 3:48
    2011年11月11日 3:02

全部回复

  • 看起來你的T-SQL沒錯,我剛以下列的程式碼來模擬你的狀況,或許你可以用sp_help檢查看看欄位的資料型態。

    use tempdb
    go
    
    create table t1 (c1 int)
    exec sp_help t1
    
    insert into t1 values(1),(2),(3)
    
    alter table t1 alter column c1 float null
    exec sp_help t1
    
    drop table t1
    


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    • 已标记为答案 shan423 2011年11月11日 3:48
    2011年11月11日 3:02
  • 不会吧.既然执行成功了,应该就修改了啊....我们这边一般也是使用这命令来修改column的类型的.

    但是基本上使用Management studio中的图形化界面修改不会成功


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年11月11日 3:04
  • 先谢谢你的回答。

    我用了你说的办法 调用

    exec sp_help t1

    查看表中我所关心列的数据类型,而且确实在 sp_help的结果当中 那个列的类型是我期望更改的类型。

    如图所示

    但是在真正数据库中的那张表,对应列数据类型仍然没有改变(尝试插入新数据类型精度的数据时被四舍五入)。

     

    这是怎么回事?


    shan423
    2011年11月11日 3:26
  • You can script out that table then double check data type of the column. What was original data type?
    • 已编辑 rmiao 2011年11月11日 3:34
    2011年11月11日 3:34
  • The original data type is real . I want be float.

    I try change data type by Management Studio and it work fine.

    but that's not a good choice. Here's a lot of table need to modify...i cant do that by this way.


    shan423
    2011年11月11日 3:39
  • Did you try change data type with 'alter table' again then check script?
    2011年11月11日 3:47
  • 刚才同样的语句又试了几次 结果成功了。。。

    郁闷。。。浪费大家这么多时间。 可能是开的 新建查询 会话连接到其它服务器上了。。

    可我记得千真万确没有搞错呀。

    搞不懂~~~


    shan423
    2011年11月11日 3:49