SQL 是否可以使用 LIKE 从数据库中获取所有表,然后更改所有表中的列大小

问题描述 投票:0回答:1

是否可以使用 LIKE 获取数据库中的所有表,例如包含“TOTAL%”的表,然后将它们保存到某个变量,然后在另一个查询中使用它们来更改它们的列大小,就像

ALTER TABLE [TABLE1, TABLE2 TABLE3, ...{Use tables from previous query}]
ALTER COLUMN [Salary] VARCHAR(254) NOT NULL
sql liquibase alter-table
1个回答
0
投票

您可以尝试使用光标来获得想要的效果。 代码可能是这样的

DECLARE @tableName nvarchar(128), @command nvarchar(max)

DECLARE tableCursor CURSOR STATIC FOR 
SELECT table_name 
FROM information_schema.tables
WHERE table_name LIKE 'TOTAL%'

OPEN tableCursor
FETCH NEXT FROM tableCursor INTO @tableName

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @command = 'ALTER TABLE ' + QUOTENAME(@tableName) + ' ALTER COLUMN [Salary] VARCHAR(254) NOT NULL'
    EXEC sp_executesql @command
    FETCH NEXT FROM tableCursor INTO @tableName
END

CLOSE tableCursor
DEALLOCATE tableCursor
© www.soinside.com 2019 - 2024. All rights reserved.