`

sqlserver2008查找某数据库中的列是否存在某个值

阅读更多
--2008查找某数据库中的列是否存在某个值
create proc spFind_Column_In_DB
(
    @type int,--类型:1为文字类型、2为数值类型
    @str nvarchar(100)--需要搜索的名字
)
as
    --创建临时表存放结果
    create table #tbl(PK int identity primary key ,tbl sysname,col sysname)
    declare @tbl nvarchar(300),@col sysname,@sql nvarchar(1000)
    if @type=1
    begin
        declare curTable cursor fast_forward
        for
            select '['+SCHEMA_NAME(SCHEMA_ID)+'].['+o.name+']' tableName,'['+c.name+']' columnName from sys.columns c inner join sys.objects o on c.object_id=o.object_id
            where o.type_desc='user_table' and user_type_id in (167,175,231,239,35,99)
     end
    else
    begin
        declare curTable cursor fast_forward
        for
        select '['+SCHEMA_NAME(SCHEMA_ID)+'].['+o.name+']' tableName,'['+c.name+']' columnName from sys.columns c inner join sys.objects o on c.object_id=o.object_id
            where o.type_desc='user_table' and user_type_id in (56,48,52,59,60,62,106,108,122)
    end
    open curtable
    fetch next from curtable into @tbl,@col
    while @@FETCH_STATUS=0
    begin
        set @sql='if exists (select * from '+@tbl+' where '
        if @type=1
        begin
            set @sql += @col + ' like ''%'+@str +'%'')'
        end
        else
        begin
            set @sql +=@col + ' in ('+@str+'))'
        end

        set @sql += ' INSERT #TBL(tbl,col) VALUES('''+@tbl+''','''+@col+''')'
        --print @sql
        exec (@sql)
        fetch next from curtable into @tbl,@col
    end
    close curtable
    deallocate curtable
    select * from #tbl

--使用例子,查询库中存在aaa这个值的列:
exec  spFind_Column_In_DB  1,'aaa'
分享到:
评论

相关推荐

    SQL Server 2008 NorthWind示例数据库下载

    在SQL Server 2008中使用NorthWind数据库,你可以: 1. 学习基本的SQL查询:通过查询Customers表来获取所有客户信息,或者根据特定条件筛选,如查找某个国家的所有客户。 2. 实践联接操作:通过JOIN语句将Orders与...

    sqlserver2008数据库实例

    这个“sqlserver2008数据库实例”是一个用于学习和实践SQL操作的资源,特别适合初学者了解如何在实际环境中创建、查询、更新和删除数据。 在这个实例中,你将找到一个学生成绩管理系统的数据库模型。这样的系统通常...

    sqlserver2008数据库实例练习

    在SQL Server 2008中,你可以创建一个或多个数据库实例来存储数据。每个实例都有自己的内存、磁盘空间和处理能力,可以独立运行。 在这个实例练习中,你可能会遇到一张或多张表,比如“学生表”、“课程表”和...

    sqlserver2008数据库实例练习-卡哥

    "sqlserver2008数据库实例练习-卡哥" 提供了一个理想的学习平台,让你有机会亲手操作数据库,学习并熟悉SQL语言的基本操作,包括查询(SELECT)、更新(UPDATE)、插入(INSERT)和删除(DELETE)等核心功能。...

    SQL Server查找表名或列名中包含空格的表和列实例代码

    本文主要给大家介绍的是关于SQL Server查找包含空格的表和列的相关内容,为什么会有这篇文章,是因为最近发现一个数据库中的某个表有个字段名后面包含了一个空格,这个空格引起了一些小问题,一般出现这种情况,是...

    SQLserver遍历所有表数据库命令

    在本文中,我们将详细介绍 SQL Server 遍历所有表数据库命令的实现方法和原理。本文将分为三个部分,分别介绍 SQL Server 的系统表和视图、游标的使用和存储过程的应用。 系统表和视图 在 SQL Server 中,有许多...

    Sql中判断是否存在数据库、表

    在SQL Server中,判断数据库或表是否存在是进行数据库管理和维护时常见的需求。这不仅有助于避免在不存在的对象上执行操作导致的错误,还可以用于自动化脚本中条件分支的判断,提高数据库管理的效率和安全性。以下将...

    sqlserver 2008 查找缺失索引

    在SQL Server 2008中,优化数据库性能的一个重要方面就是确保索引设计合理。当数据库管理系统(DBMS)检测到某个查询在没有合适索引支持的情况下运行效率较低时,它会记录下这个“缺失索引”。通过查询这些缺失索引...

    全国邮编数据库,SQLServer版

    SQLServer版是指这个数据库是基于Microsoft SQL Server数据库管理系统构建的,它提供了高效的数据存储、管理和分析能力。 在SQL Server环境中,数据通常通过SQL(Structured Query Language)脚本来进行操作。在...

    SQL Server Ip 地址数据库

    在IT行业中,SQL Server IP地址数据库是一个非常关键的组件,特别是在网络管理和数据分析的场景下。这个数据库主要用于存储、管理和查询与IP地址相关的数据,帮助系统管理员监控和控制网络流量,或者为应用程序提供...

    sqlserver中在指定数据库的所有表的所有列中搜索给定的值

    在SQL Server中,有时我们需要在特定数据库的所有表中查找包含特定值的列。例如,假设我们在数据库`NorthWind`中导入了一些客户数据,并且知道一个客户名为“ZhangShan”,我们想要找出所有包含这个名字的表格和列。...

    省市数据库SQLServer源码

    在这个“省市数据库SQLServer源码”中,我们可以深入探讨与数据库设计、SQL Server特性和省市数据管理相关的知识点。 1. **数据库设计**:在构建省市数据库时,通常会创建两个主要的表,即省份表(Provinces)和...

    在数据库中遍历查找某个字符串

    在数据库(所有字符串字段)中遍历查找(海查)某个字符串。

    在 SQL Server 2005 中使用表值函数来实现空间数据库

    在SQL Server 2005中,表值函数被用来实现空间数据库,这是一种高效的方法,尤其对于处理地理和天文数据的复杂查询。表值函数允许开发者创建自定义的函数,这些函数不仅返回单个值,而是能够返回一个表格,就像一个...

Global site tag (gtag.js) - Google Analytics