我想将列名为“USER_KEY”的所有列更新为“admin”。这可能吗?
我可以使用以下sql script获取具有指定列名的所有表名和列名:
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%USER_KEY%'
ORDER BY TableName
,ColumnName;
但我不知道如何在更新声明中使用它们。
答案 0 :(得分:0)
你可以通过PL / SQL实现这一点(注意这是oracle语法,但SQL Server其他SQL的想法应该是一样的)。类似下面的内容,构建列表/表详细信息,通过构建sql update语句传递值并在循环内执行语句...
SET AUTOCOMMIT ON
BEGIN
FOR my_table_colums in (
select c.name as 'columnname'
,t.name as 'tablename'
from sys.columns c
join sys.tables t on c.object_id = t.object_id
where c.name like '%user_key%'
order by tablename
,columnname)
LOOP
/*-- build your dynamic sql and assign to a variable --*/
mysql_update_statement := 'update '||table_colums.tablename ||' set '||table_colums.columnname||'= '''admin''';
/*-- display your dynamic update sql--*/
DBMS_OUTPUT.PUT_LINE(mysql_update_statement );
/*-- execute your dynamic update sql--*/
EXECUTE IMMEDIATE mysql_update_statement;
END LOOP;
END;
/