我想更新(更改)数据库中所有表中的值。
例如:
我有3张桌子
tbl_1
tbl_2
tbl_3
,我有一个在这些表中使用的字符串“ test”。 如何在所有3个表中将“测试”更改为“你好”?
答案 0 :(得分:1)
您必须像下面那样更新单个表
update tbl_1
set col='hello'
where tbl_1.col='test';
go
update tbl_1
set col='hello'
where tbl_1.col='test';
go
update tbl_1
set col='hello'
where tbl_1.col='test'
答案 1 :(得分:0)
为了简化操作,您可以使用information_schema.tables如下生成“更新的语句”
select 'update '+table_name+' a set col=''hello'' where a.col=''test'';'
from information_schema.tables
where table_name in ('tbl_1','tbl_2',....)
答案 2 :(得分:0)
您可以通过获取和更新像这样的每个表和每个列来手动完成
UPDATE <TableName> SET <Column Name> = <Your New Value> WHERE <Column Name> = <Old Value>
样品:
UPDATE Table1 SET COl1 = 'Hello' WHERE Col1 = 'test'
否则,您可以通过循环每个列来动态地执行相同的操作。
喜欢
DECLARE @SQL VARCHAR(MAX)
DECLARE @Min INT,@Max INT
DECLARE @ColumnList TABLE
(
SeqNo INT IDENTITY(1,1),
TableName VARCHAR(500),
ColumnName VARCHAR(500)
)
INSERT INTO @ColumnList
(
TableName,
ColumnName
)
SELECT
TABLE_NAME,
COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'varchar'
SELECT
@Min = MIN(SeqNo),
@Max = MAX(SeqNo)
FROM @ColumnList
WHILE ISNULL(@MIn,0)<=ISNULL(@Max,0)
BEGIN
SELECT
@SQL = 'UPDATE ['+LTRIM(RTRIM(TableName))+']
SET ['+LTRIM(RTRIM(TableName))+'] = ''Hello''
WHERE ['+LTRIM(RTRIM(TableName))+'] = ''Test''
GO'
FROM @ColumnList
WHERE SeqNo = @Min
EXEC(@SQL)
SELECT
@Min = ISNULL(@Min,0)+1
END
答案 3 :(得分:0)
您可以使用存储过程来更新三个表,但是所有这些表都需要一次单独更新一次:
Create Proc Test(@Value Type)
As
Begin
Update dbo.TableName1
Set ColumnName = @Value Where ColumnName = 'Test'
Update dbo.TableName2
Set ColumnName = @Value Where ColumnName = 'Test'
Update dbo.TableName2
Set ColumnName = @Value Where ColumnName = 'Test'
End