一个表A有30个字段
假设将30个字段都该为同一个值,sql语句是什么呢
假设将30个字段都该为同一个值,sql语句是什么呢
解决方案 »
- 日期操作问题,在线结分
- 多表联合查询的结果字段重复(冲突),如何解决?
- 实在比较急:系统表出问题。查询时,必须用owner.table。 本来用 select * from table 的代码都出错了,急啊急啊!
- 表A的某列值如何循环插入表B?
- 救命啊!sql server 2000数据库日志没记录了怎么办?
- 如何判断一个字段的内容,然后生成另一个字段的内容
- ms sqlserver 函数的问题
- 在多用户同时修改一条记录时候SQL2000存在数据并发吗?
- 请问怎幺修改数据库名字?
- 表名B1,B2,B3...作为字段存储到另一个表A里,若要查询该A表,并且同时统计各B表下的数量有什么好的方法没?
- SQL中系统账户问题
- 关于SQL2000复制管理的问题
declare @a varchar(20),@sql varchar(8000)
select @a='a',@sql=''
select @sql='update Table_name set '+stuff((select ','+cast(column_name as varchar)+'='''+@a+''''
as [text()]
from information_schema.columns
where table_name='Table_name'
for xml path('')),1,1,'')
exec (@sql)
GO
/*
存储过程:up_Update
作用:将指定表内满足条件的行所有字段值更改为统一数据
必选参数:tableName,newValue
可选参数:where
作者Email:[email protected]
*/
ALTER PROC up_Update
(
@tableName VARCHAR(100),--要修改的表名
@newValue VARCHAR(100),--要修改为的新字段
@where VARCHAR(200)=''--条件
)
AS
BEGIN
DECLARE @SQL VARCHAR(8000)
SET @SQL=''
SELECT @SQL=@SQL+[name]+'='''+@newValue+''',' FROM [syscolumns] where object_name(id)=@tableName
SET @SQL=LEFT(@SQL,LEN(@SQL)-1)
IF @where!=''
SET @where=' WHERE '+@where
EXEC('UPDATE '+@tableName+' SET '+@SQL+@where)
END
GO使用示例--建立测试用表
IF OBJECT_ID('TESTB') IS NOT NULL
DROP TABLE TESTB
CREATE TABLE TESTB(A int,B INT,C VARCHAR(5))
GO
--插入一些数据
INSERT INTO TESTB
SELECT '0','0','0' UNION ALL
SELECT '1','11','111' UNION ALL
SELECT '2','22','222' UNION ALL
SELECT '3','33','333' UNION ALL
SELECT '4','44','444'
GO
--开始测试
SELECT * from TESTB--查看原表内数据
exec up_update 'testb','10','[a]=''4'''--将字段a为4的行所有字段改为10
SELECT * from TESTB--查看改后结果
exec up_update 'testb','10'--将表内所有行的所有字段改为10
SELECT * from TESTB--查看改后结果
DROP TABLE TESTB--删除测试用表
GO
/*
(所影响的行数为 5 行)A B C
----------- ----------- -----
0 0 0
1 11 111
2 22 222
3 33 333
4 44 444(所影响的行数为 5 行)
(所影响的行数为 1 行)A B C
----------- ----------- -----
0 0 0
1 11 111
2 22 222
3 33 333
10 10 10(所影响的行数为 5 行)
(所影响的行数为 5 行)A B C
----------- ----------- -----
10 10 10
10 10 10
10 10 10
10 10 10
10 10 10(所影响的行数为 5 行)
*/
建存储过程用create proc
我的是alter proc 成了修改了
将alter 改为create即可