【HELP】批量修改字段类型

feixianxxx 2009-08-15 04:27:05
--1
想把TEST数据库
所有用户表中
varchar(10)类型的字段类型改成 varchar(20)
--2
想把TEST数据库
所有用户表中
a字段名字改成 b 类型改成 改成 varchar(20)


...全文
337 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixianxxx 2009-08-15
  • 打赏
  • 举报
回复

没吃饭 晕了。。

马上 吃饭去。。。

Ts
feixianxxx 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 liangck 的回复:]
运行18楼.代码.自己执行自己看...真晕.
[/Quote]



眼花了。。

应该是14楼 第二个问题解决了
18楼第一个问题解决了。。。。

liangCK 2009-08-15
  • 打赏
  • 举报
回复
--前

tbName columnName max_length
-------------------- -------------------- ----------
tb id 4
tb val 10
tb var2 50
tb2 id 4
tb2 val 20
tb2 var2 50
tb3 id 4
tb3 val 10
tb3 var2 10


(9 行受影响)


--后
tbName columnName max_length
-------------------- -------------------- ----------
tb id 4
tb val 20
tb var2 50
tb2 id 4
tb2 val 20
tb2 var2 50
tb3 id 4
tb3 val 20
tb3 var2 20


(9 行受影响)
liangCK 2009-08-15
  • 打赏
  • 举报
回复
运行18楼.代码.自己执行自己看...真晕.
feixianxxx 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 liangck 的回复:]
1.18楼
2.14楼.
[/Quote]
第一个
TB表VAL 列长还是10 没改成20.。
liangCK 2009-08-15
  • 打赏
  • 举报
回复
1.18楼
2.14楼.
feixianxxx 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 csdyyr 的回复:]
SQL code--1, trydeclare@sqlvarchar(max)select@sql=isnull(@sql+';','')+'alter table'+c.name+' alter column'+a.name+' varchar(20)'from sysobjects c,syscolumns a,systypes bwhere a.id=c.idand a.xtype=b.xt¡­
[/Quote]

这个不行
guguda2008 2009-08-15
  • 打赏
  • 举报
回复
学习
黄_瓜 2009-08-15
  • 打赏
  • 举报
回复
学习
feixianxxx 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 liangck 的回复:]
晕.自己去看呀.
[/Quote]
汗。。。
我以为 你这个 1 2题一起解决了。。
只搞定了 一个 呵呵
liangCK 2009-08-15
  • 打赏
  • 举报
回复
晕.自己去看呀.
liangCK 2009-08-15
  • 打赏
  • 举报
回复
--try
CREATE TABLE tb(id int,val varchar(10),var2 varchar(50));
CREATE TABLE tb2(id int,val varchar(20),var2 varchar(50));
CREATE TABLE tb3(id int,val varchar(10),var2 varchar(10));
GO
--查字段
SELECT
OBJECT_NAME(object_id) AS tbName,
name AS columnName,
max_length
FROM sys.columns
WHERE OBJECT_NAME(object_id) IN('tb','tb2','tb3')
ORDER BY 1,column_id
-----

EXEC sp_MsForeachTable
@command1 = N'
DECLARE @str NVARCHAR(MAX);
SET @str = '''';

SELECT @str = @str + N''ALTER TABLE ? ALTER COLUMN ''
+ QUOTENAME(c.name) + '' varchar(20);'' + CHAR(10)+CHAR(13)
FROM syscolumns AS c
JOIN systypes AS t
ON c.xusertype = t.xusertype
AND c.id = OBJECT_ID(''?'') AND t.name = ''varchar''
AND c.length = 10;

EXEC(@str);',
@whereand = N'
AND EXISTS(
SELECT * FROM syscolumns AS c
JOIN systypes AS t
ON c.xusertype = t.xusertype
AND c.id = o.id
AND t.name = ''varchar''
AND c.length = 10)';

--查字段
SELECT
OBJECT_NAME(object_id) AS tbName,
name AS columnName,
max_length
FROM sys.columns
WHERE OBJECT_NAME(object_id) IN('tb','tb2','tb3')
ORDER BY 1,column_id

GO
DROP TABLE tb,tb2,tb3;
feixianxxx 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 liangck 的回复:]
tb表有'a字段名'吗?
[/Quote]
第一题 varchar(10)类型的字段类型改成 varchar(20
第二个 你正解了
liangCK 2009-08-15
  • 打赏
  • 举报
回复
tb表有'a字段名'吗?
feixianxxx 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liangck 的回复:]
SQL code--tryCREATETABLE tb(idint,valvarchar(10),var2varchar(50));CREATETABLE tb2(idint,valvarchar(20),a字段名varchar(50));CREATETABLE tb3(idint,a字段名varchar(10),var2varchar(10));GOEXEC sp_MsForeachTable@¡­
[/Quote]
--属性
exec sp_columns tb
--字段属性貌似没变
liangCK 2009-08-15
  • 打赏
  • 举报
回复
--try
CREATE TABLE tb(id int,val varchar(10),var2 varchar(50));
CREATE TABLE tb2(id int,val varchar(20),a字段名 varchar(50));
CREATE TABLE tb3(id int,a字段名 varchar(10),var2 varchar(10));
GO

EXEC sp_MsForeachTable
@command1 = N'
DECLARE @str NVARCHAR(1000),@str2 NVARCHAR(1000);
SELECT @str = '''',@str2 = '''';

SELECT @str = N''ALTER TABLE ? ALTER COLUMN ''
+ QUOTENAME(c.name) + '' varchar(20);'',
@str2 = N''EXEC sp_rename ''''?.''+QUOTENAME(c.name)+'''''',''''B字段名'''',''''COLUMN''''''
FROM syscolumns AS c
WHERE c.id = OBJECT_ID(''?'') AND c.name = ''a字段名''

EXEC(@str)
EXEC(@str2);
',
@whereand = N'
AND EXISTS(
SELECT * FROM syscolumns AS c
WHERE c.id = o.id
AND c.name = ''a字段名'')';

--查字段
SELECT
OBJECT_NAME(object_id) AS tbName,
name AS columnName
FROM sys.columns
WHERE OBJECT_NAME(object_id) IN('tb','tb2','tb3')
ORDER BY 1,column_id

GO
DROP TABLE tb,tb2,tb3;

/*
tbName columnName
-------------------- -------------------------
tb id
tb val
tb var2
tb2 id
tb2 val
tb2 B字段名
tb3 id
tb3 B字段名
tb3 var2

(9 行受影响)
*/
--小F-- 2009-08-15
  • 打赏
  • 举报
回复
学习
feixianxxx 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liangck 的回复:]
SQL code--tryCREATETABLE tb(idint,valvarchar(10),var2varchar(50));CREATETABLE tb2(idint,valvarchar(20),a字段名varchar(50));CREATETABLE tb3(idint,a字段名varchar(10),var2varchar(10));GOEXEC sp_MsForeachTable@¡­
[/Quote]
不起作用 貌似
feixianxxx 2009-08-15
  • 打赏
  • 举报
回复
等下去试试 消化
liangCK 2009-08-15
  • 打赏
  • 举报
回复
--try
CREATE TABLE tb(id int,val varchar(10),var2 varchar(50));
CREATE TABLE tb2(id int,val varchar(20),a字段名 varchar(50));
CREATE TABLE tb3(id int,a字段名 varchar(10),var2 varchar(10));
GO

EXEC sp_MsForeachTable
@command1 = N'
DECLARE @str NVARCHAR(1000),@str2 NVARCHAR(1000);
SELECT @str = '''',@str2 = '''';

SELECT @str = N''ALTER TABLE ? ALTER COLUMN ''
+ QUOTENAME(c.name) + '' varchar(20);'',
@str2 = N''EXEC sp_rename ''''?.''+QUOTENAME(c.name)+'''''',''''B字段名'''',''''COLUMN''''''
FROM syscolumns AS c
WHERE c.id = OBJECT_ID(''?'') AND c.name = ''a字段名''

EXEC(@str)
EXEC(@str2);
',
@whereand = N'
AND EXISTS(
SELECT * FROM syscolumns AS c
WHERE c.id = o.id
AND c.name = ''a字段名'')';

GO
--DROP TABLE tb,tb2,tb3;
加载更多回复(9)
禅道开源项目管理软件3.2.1正式版本已经发布了!该版本在3.2版本的基础上进行了一些bug的修复、界面显示的调整,每位朋友都推荐升级到3.2.1版本。 禅道3.2.1版本需要注意: 1. 从3.0.stable版本之前升级到话,需要将module/project/css/manageproduct.css文件删除,已解决项目视图产品页面的样式表冲突问题。 2. 如果安装过每日提醒插件,需要更新到最新的每日提醒插件。 3. 特别说明:3.2.1版本不需要再下载补丁3.2.1。 一、修改记录 修复首页滚动条问题。 修复任务不能批量关闭的问题。 修复bug列表上一个,下一个不对的问题。 调整id字段的宽度。 任务增加模块的编辑和查看。 将纯图标的链接形式换成图标和文字组合的形式。 调整初次创建任务再编辑时提示状态必须的完成的逻辑。 修复产品的下拉列表没有按order字段排序的问题。 调整统计视图报表的一些字段错误。 如果您觉得禅道对您有所帮助,请点击捐助禅道 二、下载地址 2.1 sourceforge下载: 源码包:https://sourceforge.net/projects/zentao/files/3.2/ZenTaoPMS.3.2.1.stable.zip/download windows一键安装包:https://sourceforge.net/projects/zentao/files/3.2/ZenTaoPMS.3.2.1.stable.exe/download 2.2 本站镜像: 源码包 :http://dl.zentao.net/3.2/ZenTaoPMS.3.2.1.stable.zip windows一键安装包 :http://dl.zentao.net/3.2/ZenTaoPMS.3.2.1.stable.exe 三、安装升级 安装文档:http://www.zentao.net/help-read-78950.html 升级文档:http://www.zentao.net/help-read-78960.htm

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧