请问把一个text not null的字段改为
text null
sql脚本如何写?
以下写法试过是不行的,
alter table 表 alter column  字段 text   null  
提示是text字段不能这么改

解决方案 »

  1.   

    ALTER TABLE
    通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。要更改的列不能是: 数据类型为 text、image、ntext 或 timestamp 的列。
      

  2.   

    使用 WRITETEXT 语句重写该列的整个数据值。 
    例如,以下查询将更改 New Moon Books 中 pr_info 列的内容:USE pubs
    sp_dboption 'pubs', 'select into/bulkcopy', 'true'
    DECLARE @ptrval varbinary(16)
    SELECT @ptrval = TEXTPTR(pr_info) 
    FROM pub_info pr INNER JOIN publishers p
        ON p.pub_id = pr.pub_id 
        AND p.pub_name = 'New Moon Books'
    WRITETEXT pub_info.pr_info @ptrval 'New Moon Books (NMB) '
    sp_dboption 'pubs', 'select into/bulkcopy', 'true'使用 UPDATETEXT 语句更新 ntext、text 或 image 列的特定数据块。 
    例如,以下查询用字母 z 取代 New Moon Books 中 text 列的第 88 个字符(Moon 中的第二个字母 o):USE pubs
    sp_dboption 'pubs', 'select into/bulkcopy', 'true'
    DECLARE @ptrval varbinary(16)
    SELECT @ptrval = TEXTPTR(pr_info) 
        FROM pub_info pr INNER JOIN publishers p
            ON p.pub_id = pr.pub_id 
            AND p.pub_name = 'New Moon Books'
    UPDATETEXT pub_info.pr_info @ptrval 88 1 'z' 
    sp_dboption 'pubs', 'select into/bulkcopy', 'false'
    请参见
      

  3.   

    ---------------------------------------------
    --> Author : js_szy
    --> Target : ★★★
    --> Date   : 2009-12-16 15:31:12
    --> Version: SQL Server 2005
    ---------------------------------------------
        
    --> 测试数据: @tb
    create table tb(id text not null)
    insert into tb
    select 'asd' --select * from @tbgo 
    alter table tb alter column id text  null  --drop table tb命令已成功完成。
    测试没问题
      

  4.   

    alter table tb
    add 字段1 text null
    go
    update tb 
    set 字段1=字段
    go
    alter table tb 
    drop column 字段
    go
    EXEC sp_rename 'tb.字段1', '字段', 'COLUMN';
      

  5.   

    没做个text类型列的更改,重建表行不?
      

  6.   

    SQL 2005 确实可以, 2000不行。
      

  7.   

    你好,我用的是sql2000alter table community_info alter column home_news text null
    go服务器: 消息 4928,级别 16,状态 1,行 1
    无法更改列 'home_news',因为该列是 'text'。
      

  8.   

    alter table tb add column xh text null
    update tb set xh = '旧列'
    alter table tb drop column '旧列'
    EXEC sp_rename 'tb.[xh]', '旧列', 'COLUMN'
      

  9.   

    本帖最后由 roy_88 于 2009-12-16 15:57:28 编辑
      

  10.   

    在SQL2000只有這樣處理,沒有什麼簡便方法