Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql更新列,其中列名等于用户密钥_Sql_Sql Server_Sql Update - Fatal编程技术网

sql更新列,其中列名等于用户密钥

sql更新列,其中列名等于用户密钥,sql,sql-server,sql-update,Sql,Sql Server,Sql Update,我想将列名为“USER_KEY”的所有列更新为值“admin”。这可能吗 我可以使用以下sql获取具有指定列名的所有表名和列名: 但我不知道如何在update语句中使用这些 您可以通过PL/SQL实现这一点(请注意,这是oracle语法,但对于SQL server和其他SQL,想法应该是相同的)。如下所示,构建列表/表详细信息,通过构建sql update语句传递值,并在循环中执行所有语句 SET AUTOCOMMIT ON BEGIN FOR my_table_colums in ( sele

我想将列名为“USER_KEY”的所有列更新为值“admin”。这可能吗

我可以使用以下sql获取具有指定列名的所有表名和列名:


但我不知道如何在update语句中使用这些

您可以通过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;
/

这是一次性任务还是需要重复执行?这是一次性任务。如果是一次性任务,您只需将每个结果行的UPDATE语句(将
c.name
t.name
前后的语句串联)吐出到文本结果窗口中,将生成的脚本复制到n过去并运行。谢谢。我需要重写它,看看它是否工作,因为Mssql没有for循环和其他一些命令。
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;
/