【问题标题】:Looping through table and column combinations循环遍历表和列组合
【发布时间】:2022-01-06 15:12:49
【问题描述】:

我需要制作一个遍历所有表的脚本,并选择那些列 名称已指定。

我可以找到指定名称的列,

SELECT sys.columns.name AS ColumnName, tables.name AS TableName 
FROM sys.columns 
JOIN sys.tables ON sys.columns.object_id = tables.object_id
                AND sys.columns.name LIKE 'name'

但是如何在 SQL 中循环遍历 select 语句的每一行并对表 TableName 和列 ColumnName 执行更新命令,并将内容更新为类似 '匿名'?

【问题讨论】:

    标签: sql for-loop sql-update dynamic-sql


    【解决方案1】:

    我只是假设您搜索的确切名称,并且不要使用像 %,?,_ 这样的通配符。您可以使用以下查询:

    declare @query varchar(max), @val varchar(100);
    
    set @val ='L';
    
    SELECT @query = COALESCE(@query+ '; ','')+ 'update '+  s.name +'.' + t.name +' set '+ sys.columns.name +' = '''+ @val +''''
    FROM sys.columns 
    JOIN sys.tables t ON sys.columns.object_id = t.object_id
                    AND sys.columns.name LIKE '%Name%'
    join sys.schemas s on s.schema_id = t.schema_id
    
    
    select @query
     
     exec (@query)
    

    【讨论】:

    • 您的选择查询似乎有点不同?
    • 是的,我在查询中添加了一个模式表,因为一个表可以在另一个模式中。 @IamnotFat
    猜你喜欢
    • 2016-04-14
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 2018-10-26
    • 2013-09-04
    相关资源
    最近更新 更多