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

SET NOCOUNT ON;
DECLARE @sql VARCHAR(1024)
DECLARE @table VARCHAR(64)
DECLARE @column VARCHAR(64)
DECLARE @value VARCHAR(64) 
set @value=‘14799059407‘
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

时间: 2024-08-27 10:15:46

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

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

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

SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用

原文:SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用 近段时间以来,一直在探究SQL Server查询性能的问题,当然也漫无目的的查找了很多资料,也从网上的大神们的文章中学到了很多,在这里,向各位大神致敬.正是受大神们无私奉献精神的影响,所以小弟也作为回报,分享一下关于SET STATISTICS IO和SET STATISTICS TIME这两条T_SQL命令,在查询优化性能中的作用. 首先我想说明一下这篇文章不是关于如何

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何在SQL Server存储过程中获取另一存储过程的执行结果记录集?如何在存储过程中检索动态SQL语句的执行结果?如何实现类似SELECT * FROM (EXEC procedure_name @parameters_var) AS datasource ... 的功能?procedure_

SQL点滴12—SQL Server备份还原数据库中的小把戏

原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support  1 media families, but 2 media families are expected according to the backup device specification”.如下图: 解决办法是首先选中击上一次备份的文件,点击Remove,去掉当前的备份文件,然后再点击OK备份.这样才能正确的备份.也在微软帮助

sql server 怎样用SQL语句查询一个数据库中的所有表?

搜了一大堆做个总结,以下是Sql Server中的方法,备忘下 1,利用sysobjects系统表 在这个表中,在数据库中创建的每个对象(例如约束.默认值.日志.规则以及存储过程)都有对应一行,我们在该表中筛选出xtype等于U的所有记录,就为数据库中的表了. 示例语句如下:: select * from sysobjects where xtype='U' 注意:在SQL SERVER2005中,出现了sys.objects目录视图来代替sysobjects系统表,我们在SQL SERVER2

SQL Server 删除当前数据库中所有数据库 ,无视约束

Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: exec sp_msforeachtable  @Command1 ='truncate table ?' 删除所有数据表: exec sp_msforeachtable 'delete   N''?''' 清空SQL Server数据库中所有表数据的方法(有约束的情况) 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循

如何让登录的Longin链接SQL SERVER时,在数据库中只能看到有权限的数据库

一般情况下,在sql server中创建的Login,不管权限大小,都是可以看到其所在sql server中所有的数据库,可以通过以下T-SQL验证 IF EXISTS (SELECT * FROM sys.server_principals sp WHERE name = 'test') DROP LOGIN test GO CREATE LOGIN test WITH PASSWORD = 'test' GO --检查test是否有查看任何数据库以及连接SQL SERVER的权限 EXECU

android利用provider查询同一个数据库中没有对外暴露出来的表

[原创]转载请加本篇博客地址http://www.cnblogs.com/scarecrow-blog/p/6266042.html 个人感觉这是android provider 的一个漏洞, 废话少说直接上代码 1 public String getCanonicalAddresses(String recipient_ids){ 2 String[] ids=recipient_ids.split(" "); 3 System.out.println("recipient

SQL语句查询一个数据库中的所有表

--读取库中的所有表名 select name from sysobjects where xtype='u' --读取指定表的所有列名 select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名') 获取数据库表名和字段 sqlserver中各个系统表的作用 sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序