Sql 是否可以动态检查该列是否存在于另一个数据库的表中

Sql 是否可以动态检查该列是否存在于另一个数据库的表中,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,因此,当我必须知道该列是否存在于另一个数据库的表中时,我就遇到了这种情况。我不能切换数据库上下文,也不能使用动态SQL,因为我必须在标量函数中进行切换 我该怎么做 我可以通过检查object\u id('..')来查找表是否存在,但我找不到检查列是否存在的方法 似乎无法使用object\u id()函数,列- 更新。我完全忘了提到、、和都是变量,所以不可能使用信息模式或系统表/视图。所以应该是这样的 declare @database_name nvarchar(128), @s

因此,当我必须知道该列是否存在于另一个数据库的表中时,我就遇到了这种情况。我不能切换数据库上下文,也不能使用动态SQL,因为我必须在标量函数中进行切换

我该怎么做

我可以通过检查
object\u id('..')
来查找表是否存在,但我找不到检查列是否存在的方法

似乎无法使用
object\u id()
函数,列-

更新。我完全忘了提到
都是变量,所以不可能使用
信息模式
系统
表/视图。所以应该是这样的

declare
    @database_name nvarchar(128),
    @schema_name nvarchar(128),
    @table_name nvarchar(128),
    @column_name nvarchar(128)

if object_id(@database_name + '.' + @schema_name + '.' + @table_name) is not null
    print 'Table exists'
else
    print 'Table does not exist'

if <??? how to check if column exists ???>
    print 'Column exists'
else
    print 'Column does not exist'
声明
@数据库名称nvarchar(128),
@模式名称nvarchar(128),
@表1\u名称nvarchar(128),
@列名nvarchar(128)
如果对象_id(@database_name++.++@schema_name++.++@table_name)不为空
打印“表已存在”
其他的
打印“表不存在”
如果
打印“列存在”
其他的
打印“列不存在”

好的,到目前为止,我找到的唯一方法就是检查函数。这看起来像是某种黑客攻击,但它的工作原理是一致的,我已经检查了这一组数据库的动态SQL

declare
    @database_name nvarchar(128),
    @schema_name nvarchar(128),
    @table_name nvarchar(128),
    @column_name nvarchar(128),
    @object_name nvarchar(max)

select @object_name = @database_name + '.' + @schema_name + '.' + @table_name

if object_id(@object_name) is not null
    print 'Table exists'
else
    print 'Table does not exist'

if col_length(@object_name, @column_name) is not null
    print 'Column exists'
else
    print 'Column does not exist'
试试这个

if exists(  select top 1 1
                from    Sys.tables    t
                join    Sys.columns   c
                    on  t.object_id = c.object_id
                where  t.name =  'Your_Table_name'
                    and c.name = 'Your_Column_name')
    select  'Your Cloumn Exists'
    else
    select 'Your Cloumn Does not Exist'

如果您想知道列是否已定义,可以使用
信息\u架构
函数:

select count(*) as IsExists
from <databasename>.information_schema.columns c
where table_schema = '<schema>' and table_name = '<tablename>' and
      column_name = '<columnname>'
选择count(*)作为iExists
from.information\u schema.c列
其中,表_schema=''和表_name='',以及
列名称=“”

值为0表示该列不存在。值为1表示它确实存在。

要检查该列是否存在于数据库的任何表中,可以使用下面的脚本

-- with partial column name: 

        IF EXISTS 
        (
            SELECT * 
            FROM INFORMATION_SCHEMA.COLUMNS 
            where column_name like '%SEARCH_TEXT%'
        )
            PRINT 'Column found'
        ELSE
            PRINT 'Column not found'


    -- To search with exact text
        IF EXISTS 
        (
            SELECT * 
            FROM INFORMATION_SCHEMA.COLUMNS 
            where column_name = 'SEARCH_TEXT'
        )
            PRINT 'Column found'
        ELSE
            PRINT 'Column not found'

要查看专栏的详细信息,只需运行if语句中的脚本

hi请检查更新版本,我错过了问题的要点,我必须动态执行此操作hi请检查更新版本,我错过了问题的要点,我必须动态执行此操作