入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

sql查询数据库中有某个值的所有表

创建时间:2013-03-01 投稿人: 浏览次数:4329

在数据库中查找含有某个值的所有表的表名,使用如下的存储过程可以做到这一点。

CREATE PROCEDURE dbo.FindString
    @string NVARCHAR(100)
AS

DECLARE @SQL NVARCHAR(4000);
    SET @SQL = N"
            DECLARE @str NVARCHAR(4000);
            SELECT
                @str = ISNULL(@str + N"" OR "" + c.name + N"" LIKE N""""%"
                                                + @string + " %"""""",
                               c.name + N"" LIKE N""""%" + @string +"%"""""") FROM syscolumns AS c JOIN systypes AS t ON c.id=OBJECT_ID(""?"")
                AND c.xtype=t.xtype
                AND t.name IN(""varchar"",""char"",""nvarchar"",""nchar"");

            SET @str = ""SELECT TOP 1 1 FROM ? WHERE ""+@str;
            CREATE TABLE #tb(a int);
            INSERT #tb(a) EXEC(@str);
            IF EXISTS(SELECT * FROM #tb)
                PRINT ""?""
        ";
    EXEC sp_MsforeachTable @SQL;
GO

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像