从数据库所有表中查找特定的数据(模糊匹配)
时间:2021-09-08
本文章向大家介绍从数据库所有表中查找特定的数据(模糊匹配),主要包括从数据库所有表中查找特定的数据(模糊匹配)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
需求:我们想查找某个数据在数据库哪些表中存在
使用存储过程来解决,在所需要查找的数据库下面创建以下存储过程:
-- ============================================= -- Description: 从数据库中查找特定数据所在的所有表 -- ============================================= ALTER PROCEDURE [dbo].[P_find] -- Add the parameters for the stored procedure here @DataType INT,--类型:1字符型、2数值型 、3日期型 @searchData NVarChar(200)--需要搜索的内容 AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here --创建临时表存放结果 IF exists (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[#resTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) DROP TABLE [dbo].[#resTable] CREATE TABLE #resTable(ID int identity primary key,tblName sysname,colName sysname) IF (@DataType <> 1 AND @DataType <> 2 AND @DataType <> 3) GOTO Quit DECLARE @tblName NVarChar(500),@colName sysname,@sql nvarchar(1000), @type_id NVarChar(100) IF @DataType = 1 set @type_id='167,175,231,239,35,99' ELSE IF @DataType = 2 set @type_id='56,48,52,59,60,62,106,108,122' ELSE IF @DataType = 3 set @type_id='61' DECLARE tmpCursor 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 CHARINDEX(','+CAST(user_type_id AS nvarchar)+',',','+@type_id+',')>0 --Where o.type_desc='user_table' and user_type_id IN (167,175,231,239,35,99) OPEN tmpCursor FETCH next from tmpCursor into @tblName,@colName WHILE @@FETCH_STATUS=0 BEGIN SET @sql='if exists (select * from '+@tblName+' where ' IF @DataType =1 set @sql =@sql + @colName + ' like ''%'+@searchData +'%'')' ELSE IF @DataType =2 set @sql =@sql + @colName + ' in ('+@searchData+'))' ELSE IF @DataType =3 set @sql =@sql + 'CONVERT(Varchar(20),'+@colName + ',121) like ''%'+@searchData +'%'')' SET @sql = @sql +' INSERT #resTable(tblName,colName) VALUES('''+@tblName+''','''+@colName+''')' ---print @sql EXEC (@sql) FETCH next from tmpCursor into @tblName,@colName END CLOSE tmpCursor DEALLOCATE tmpCursor QUIT: IF (SELECT COUNT(*) FROM #resTable) > 0 BEGIN DECLARE @ls_Table NVarChar(500),@ls_col sysname,@ls_sql nvarchar(1000) DECLARE Cur_DataTable CURSOR FOR SELECT tblName,colName FROM #resTable OPEN Cur_DataTable FETCH NEXT FROM Cur_DataTable INTO @ls_Table,@ls_col WHILE @@FETCH_STATUS = 0 BEGIN IF @DataType <> 3 SET @ls_sql = 'select '''+@ls_Table+''+''+@ls_col+'''as 表名字段名,'+@ls_col+' from '+@ls_Table+' where '+@ls_col+' like ''%'+@searchData+'%''' ELSE SET @ls_sql = 'select '''+@ls_Table+''+''+@ls_col+'''as 表名字段名,'+@ls_col+' from '+@ls_Table+' where convert(VarChar(20),'+@ls_col+',121) like ''%'+@searchData+'%''' --print (@ls_sql) EXEC (@ls_sql) FETCH next from Cur_DataTable into @ls_Table,@ls_col END CLOSE Cur_DataTable DEALLOCATE Cur_DataTable END END
使用方法,执行存储过程:
USE [数据库名] GO DECLARE @return_value int EXEC @return_value = [dbo].[P_find] @DataType = 1, @searchData = N'要查找的文本' SELECT 'Return Value' = @return_value GO
执行结果如下:
原文地址:https://www.cnblogs.com/sky6699/p/15243440.html
- 微信快速开发框架(七)--发送客服信息,版本更新至V2.2 代码已更新至github
- 微信快速开发框架(八)-- V2.3--增加语音识别及网页获取用户信息,代码已更新至Github
- 微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布
- Android系统层Watchdog机制源码分析
- 算法之插入排序
- Android Studio环境下搭建ReactNative
- Android实现两个ScrollView互相联动,同步滚动的效果
- 一个可以拖动的自定义Gridview代码
- android图片加载库Glide
- 密码最短长度为7,其中必须包含以下非字母数字字符1 完美解决方案
- android开发性能分析
- url带中文参数显示乱码的问题
- 转换程序的一些问题:设置为 OFF 时,不能为表 'Test' 中的标识列插入显式值。8cad0260
- JQuery 对控件的事件操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Vim中宏命令的使用实例详解
- 在CentOS搭建Git服务器的详细步骤
- CentOS使用EPEL源的方法步骤
- VirtualBox 错误:This kernel requires the following features not present on the CPU
- keepalived实现nginx高可用
- LINUX中详解AWK内建变量FS,NF,NR,RT,RS,ORS,OFS
- Centos7安装配置NFS服务和挂载教程(推荐)
- 轻松搞定VIM高亮NGINX配置文件的方法
- CentOS7 下安装telnet服务的实现方法
- Linux内核启动参数详解
- CentOS6.3添加nginx系统服务的实例详解
- Linux中在防火墙中开启80端口方法示例
- Apache 获取真实ip的配置的实现方法
- Linux下文件的切分与合并的简单方法介绍
- ubuntu 系统上为php加上redis 扩展的实现方法