如何查找数据库中某一字段的某一内容

如何查找数据库中某一字段的某一内容,第1张

一个表一个表,一个字段一个字段的去查,比如:select

*

from

表1

where

字段1=值

把表导入到sql文件里面,然后打开这个文件,用"查找"的功能找这个值。但是如果表和数据库很大的话,恐怕也不容易导出和打开这个sql文件。

CREATE PROCEDURE [dbo].[findStringFromSys]

-- Add the parameters for the stored procedure

@StringName varchar(255)

AS

BEGIN

--1.定义需要查找的关键字。在搜索中,使用模糊搜索:LIKE '%@key_find%'

DECLARE @key_find NVARCHAR(MAX) = @StringName--假设是找字符串"123"

--2.用游标Cursor_Table,遍历所有表

DECLARE Cursor_Table CURSOR FOR

SELECT name from sysobjects WHERE xtype = 'u' AND name <>'dtproperties'

OPEN Cursor_Table

DECLARE @tableName NVARCHAR(MAX)

FETCH NEXT from Cursor_Table INTO @tableName

WHILE @@fetch_status = 0

BEGIN

DECLARE @tempSQLText NVARCHAR(MAX) = ''

--3.在表中,用游标columnCursor,遍历所有字段。注意,只遍历字符串类型的字段(列)

DECLARE columnCursor CURSOR FOR

SELECT Name FROM SysColumns WHERE ID = Object_Id( @tableName ) and

(

xtype = 35 or --text

xtype = 99 or --ntext

xtype = 167 or --varchar

xtype = 175 or --char

xtype = 231 or --nvarchar

xtype = 239 or --nchar

xtype = 241 --xml

)

OPEN columnCursor

DECLARE @columnName NVARCHAR(MAX)

FETCH NEXT from columnCursor INTO @columnName

WHILE @@fetch_status = 0

BEGIN

--4.在表的字段中,对每一行进行模糊搜索,并输出找到的信息。

DECLARE @DynamicSQLText NVARCHAR(MAX) = 'IF ( EXISTS ( SELECT * FROM [' + @tableName + '] WHERE [' + @columnName + '] LIKE ''%' + @key_find + '%'' ) ) BEGIN DECLARE @CurrentTableCount Bigint = ( SELECT COUNT(*) From [' + @tableName + '] )PRINT ''Find : Table [' + @tableName + '], Column [' + @columnName + '], Row Count:'' + CAST( @CurrentTableCount AS NVARCHAR(MAX) ) + ''.'' END'

EXEC( @DynamicSQLText )

FETCH NEXT from columnCursor INTO @columnName

END

exec(@tempSQLText)

CLOSE columnCursor

DEALLOCATE columnCursor

FETCH NEXT from Cursor_Table INTO @tableName

END

CLOSE Cursor_Table

DEALLOCATE Cursor_Table

END

GO


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9972351.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存