ALTER TABLE 通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。要更改的列不能是: 数据类型为 text、image、ntext 或 timestamp 的列。
使用 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' 请参见
--------------------------------------------- --> 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命令已成功完成。 测试没问题
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';
没做个text类型列的更改,重建表行不?
SQL 2005 确实可以, 2000不行。
你好,我用的是sql2000alter table community_info alter column home_news text null go服务器: 消息 4928,级别 16,状态 1,行 1 无法更改列 'home_news',因为该列是 'text'。
alter table tb add column xh text null update tb set xh = '旧列' alter table tb drop column '旧列' EXEC sp_rename 'tb.[xh]', '旧列', 'COLUMN'
通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。要更改的列不能是: 数据类型为 text、image、ntext 或 timestamp 的列。
例如,以下查询将更改 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'
请参见
--> 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命令已成功完成。
测试没问题
add 字段1 text null
go
update tb
set 字段1=字段
go
alter table tb
drop column 字段
go
EXEC sp_rename 'tb.字段1', '字段', 'COLUMN';
go服务器: 消息 4928,级别 16,状态 1,行 1
无法更改列 'home_news',因为该列是 'text'。
update tb set xh = '旧列'
alter table tb drop column '旧列'
EXEC sp_rename 'tb.[xh]', '旧列', 'COLUMN'