【问题标题】:Is there any way to iterate through each column in a table in SQL Server有什么方法可以遍历 SQL Server 表中的每一列
【发布时间】:2018-03-13 14:46:35
【问题描述】:

我有一个包含 10 列的表。我需要的是通过 while 循环选择每一列(选择每一列名称而不是每一列值)并查找其名称是否以“框”结尾,如果是,则添加该列变量的值。

例如:

while(column_name(1) = like'%box')
    begin
    select @value = column_name  from table 
    select column_name = column_name + 1 (i.e select next column name from table)
    end

【问题讨论】:

  • 查询sys.columnsINFORMATION_SCHEMA.COLUMNS获取列名
  • 是的。我很惊讶我找不到关于 SO 的好的解释。这里有一些类似的东西(它比你需要的更多)stackoverflow.com/questions/20463365/…
  • 我试过这个兄弟,但无法按照我的方式改变它。 @Nick.McDermaid
  • 如果您有多个列包含相同“类型”的数据,因此您想统一查询所有列,这通常是数据模型损坏的标志。

标签: sql sql-server


【解决方案1】:

不是使用 while 循环完成的,而是一种快速简便的方法来查找名称喜欢的任何列。

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      
        t.name = 'TableName'
        AND c.name LIKE 'box%'
ORDER BY    
         TableName
        ,ColumnName;

答案已更新,现在在 where 子句中包含表名。

【讨论】:

  • 它搜索我的整个数据库,但我只需要搜索一个表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 2016-09-29
  • 2018-11-01
  • 1970-01-01
  • 2018-11-22
相关资源
最近更新 更多