SQL Server - 在所有数据库表中搜索列

时间:2016-11-10 18:20:39

标签: sql sql-server

我想执行一个SQL查询来查找数据库中没有特定列的所有表吗?

E.g。我想要一个没有名为' BranchID'。

的列的表列表

感谢您的关注。

5 个答案:

答案 0 :(得分:3)

信息架构视图包含有关数据库的元数据。有关详细信息,请转到here

使用这些视图你可以做这样的事情......

Private Sub Worksheet_Change(ByVal Target As Range)

    Const Scope = "C2:C5" ' monitoring area

    Static oData As New Dictionary
    Dim rCells As Range
    Dim oCell
    Dim dDelta

    Set rCells = Application.Intersect(Target, Target.Parent.Range(Scope))
    If Not rCells Is Nothing Then
        For Each oCell In rCells
            With oCell
                dDelta = .Value - oData(.Address)
                If dDelta <> 0 Then
                    .Offset(0, 1).Value = dDelta
                    oData(.Address) = .Value
                End If
            End With
        Next
    End If

End Sub

答案 1 :(得分:0)

[user@user ~]$ echo "modified:   ASCourses-UI-vechi/bin/.gitignore" | sed 's/modified:\s\+//'
ASCourses-UI-vechi/bin/.gitignore

(从内存来看,我的列名可能不对,但应该让你大部分时间都在那里:))

答案 2 :(得分:0)

这应该有用。

select table_name 
from INFORMATION_SCHEMA.COLUMNS
except 
select table_name
from INFORMATION_SCHEMA.COLUMNS
where column_name = 'BranchID'

首先,我们从Information_Schema.Columns中选择table_name,其中table_name不在选择具有Branch_ID列的表的查询中

答案 3 :(得分:0)

您可以使用INFORMATION_SCHEMA.COLUMNS表和INFORMATION_SCHEMA.TABLES表来使用普通SQL查询获取所需信息。

在您的情况下,您将使用子查询:

ole_obj_->Close(OLECLOSE_NOSAVE);

答案 4 :(得分:0)

我创建了一个可以帮助您的可重复使用的程序。

CREATE PROC SP_UTIL_findcolumns
  @SearchString As varchar(250) = NULL
AS 
BEGIN
SELECT 
    t.TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES AS t
WHERE NOT EXISTS 
    (SELECT TABLE_NAME 
     FROM INFORMATION_SCHEMA.COLUMNS AS c 
     WHERE c.TABLE_NAME = t.TABLE_NAME 
       AND c.COLUMN_NAME = @SearchString )
END