zoukankan      html  css  js  c++  java
  • sql查询数据库中有某个值的所有表

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

    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

  • 相关阅读:
    docker 容器简单使用
    C++ | 程序编译连接原理
    C++ | 虚拟地址空间
    python学习笔记(十)——进程间通信
    菜鸟教程-c
    现代操作系统-第三版-疑问
    小米C++面经
    面经积累-杂
    哈希表相关题目-leetcode简单
    字符串相关题目-leetcode简单(6-10/共51道)
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2939720.html
Copyright © 2011-2022 走看看