当前位置:首页 > SQL

查询整个数据库中某个特定值所在的表和字段的方法

happyfhb12年前 (2015-01-08)SQL1960
摘要:有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,在网上搜了一下,找到一个比较好的方法,通过一个存储过程实现的。只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。 前提是要将这个存储过程放在所查询的数据库。先创建下面的存储过程,然后用 EXEC [SP_Fi…

有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,在网上搜了一下,找到一个比较好的方法,通过一个存储过程实现的。只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。 前提是要将这个存储过程放在所查询的数据库。

先创建下面的存储过程,然后用 EXEC [SP_FindValueInDB] '要查询的值' 来调用


CREATE PROCEDURE [dbo].[SP_FindValueInDB]
(
    @value VARCHAR(1024)
)        
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql VARCHAR(1024) 
DECLARE @table VARCHAR(64) 
DECLARE @column VARCHAR(64) 

CREATE TABLE #t ( 
    tablename VARCHAR(64), 
    columnname VARCHAR(64) 
) 

DECLARE TABLES CURSOR 
FOR 

    SELECT o.name, c.name 
    FROM syscolumns c 
    INNER JOIN sysobjects o ON c.id = o.id 
    WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239) 
    ORDER BY o.name, c.name 

OPEN TABLES 

FETCH NEXT FROM TABLES 
INTO @table, @column 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] ' 
    SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') ' 
    SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', ''' 
    SET @sql = @sql + @column + ''')' 

    EXEC(@sql) 

    FETCH NEXT FROM TABLES 
    INTO @table, @column 
END 

CLOSE TABLES 
DEALLOCATE TABLES 

SELECT * 
FROM #t 

DROP TABLE #t 


End


扫描二维码推送至手机访问。

版权声明:本文由海海日记-冯海滨博客发布,如需转载请注明出处。

本文链接:http://www.fenghaibin.com/?id=1181

“查询整个数据库中某个特定值所在的表和字段的方法” 的相关文章

sql trim()函数去掉两头空格

1.sql trim()函数去掉两头空格sql语法中没有直接去除两头空格的函数,但有ltrim()去除左空格rtrim()去除右空格。合起来用就是sql的trim()函数,即select ltrim(rtrim(UsrName))2.distinct 选择多列,其中一列不能重复,其他列取最大值。Go…

sql2000 CDkey 万用的sql2000 cdkey

H6TWQ-TQQM8-HXJYG-D69F7-R84VM…

查看SQL Server版本号(2005 & 2008)

 方法一: select serverproperty('productversion') ,serverproperty('productlevel') ,serverproperty('edition') 输出:…

SQL2008和sql2008 r2有什么区别

 首先从不同的角度来说1 如果你是VS2008 则配合良好的是 SQL 2008 而不是 SQL 2008R2.2 如果是 VS2010 则配合良好的是2008R23 SSRS&n…

使用sql server management studio 2008 连接数据库,无法查看数据库,提示 无法为该请求检索数据 错误916

使用sql server management studio 2008 连接数据库,无法查看数据库,提示 无法为该请求检索数据 错误916

今日使用sql server management studio 2008 连接远程数据库,可以链接上,但是无法查看自己的数据库,点击数据库后,提示 无法为该请求检索数据 错误916 解决方法如下点击左侧的数据库,然后到右侧的 “名称”注意 如果点击 没有出现对象自愿管理器 请按F7  然…

sql2008 不允许所请求的注册表访问权

百度 谷歌都照了也没有答案。 不允许访问大部分出在win7下 非管理员权限 获取注册表。其实解决方案很简单1. 右键使用管理员打开2. 自己做一个小程序 启动时 先获取 管理员权限 然后 在通过那个程序打开sql2008 可以用 pross.open 这个函数。就继承了 管理员权限就ok了。…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。