sqlserver根據(jù)查詢數(shù)據(jù)庫中指定的數(shù)值在哪個表全庫全表查詢內(nèi)容
發(fā)布時間:2024/6/5 18:31:09 作者:Admin 閱讀:144
廣告:
GO /****** Object: StoredProcedure [dbo].[FindValueInAllTables] Script Date: 2024-06-05 16:35:54 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[FindValueInAllTables] @SearchValue DECIMAL AS BEGIN SET NOCOUNT ON; DECLARE @TableName NVARCHAR(256); DECLARE @ColumnName NVARCHAR(256); DECLARE @SearchStr NVARCHAR(256); DECLARE @SQL NVARCHAR(MAX); DECLARE Cur CURSOR FOR SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE IN ('decimal', 'numeric', 'float', 'real', 'money', 'smallmoney', 'int', 'bigint', 'tinyint') ORDER BY TABLE_NAME, ORDINAL_POSITION; OPEN Cur; FETCH NEXT FROM Cur INTO @TableName, @ColumnName; WHILE @@FETCH_STATUS = 0 BEGIN SET @SearchStr = 'SELECT * FROM [' + @TableName + '] WHERE [' + @ColumnName + '] = ' + CAST(@SearchValue AS NVARCHAR); EXEC sp_executesql @SearchStr; FETCH NEXT FROM Cur INTO @TableName, @ColumnName; END CLOSE Cur; DEALLOCATE Cur; END GO
然后執(zhí)行:EXEC FindValueInAllTables @SearchValue = 7005;
第二步根據(jù)字段名稱查詢表名,在sqlserver中如何根據(jù)字段名查找字段所在的表:記下相應(yīng)的值如: tid = 304387
select a.name TableName, b.name FieldName from sysobjects a,syscolumns b where a.id=b.id and b.name='FieldName' and a.type='U'
找到表名:
select * from tablename where tid = 304387
UPDATE tablename SET DATETIME='2024-06-05 00:25:53' where tid = 304387
查找中文內(nèi)容:
USE [dpyd2024] GO /****** Object: StoredProcedure [dbo].[FindValueInAllTables] Script Date: 02/11/2025 16:54:11 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[FindValueInAllTables] @SearchValue nvarchar AS BEGIN SET NOCOUNT ON; DECLARE @TableName NVARCHAR(256); DECLARE @ColumnName NVARCHAR(256); DECLARE @SearchStr NVARCHAR(256); DECLARE @SQL NVARCHAR(MAX); DECLARE Cur CURSOR FOR SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE IN ('nvarchar', 'varchar') ORDER BY TABLE_NAME, ORDINAL_POSITION; OPEN Cur; FETCH NEXT FROM Cur INTO @TableName, @ColumnName; -- 聲明一個變量來存儲計數(shù)結(jié)果 DECLARE @TotalCount INT; DECLARE @SearchStr2 NVARCHAR(256); DECLARE @show_num varchar(9); WHILE @@FETCH_STATUS = 0 BEGIN SET @SearchStr = 'SELECT * FROM [' + @TableName + '] WHERE [' + @ColumnName + '] like '''+@SearchValue+'%'' '; SET @SearchStr2 = 'SELECT @a = count(*) FROM [' + @TableName + '] WHERE [' + @ColumnName + '] like '''+@SearchValue+'%'' '; exec sp_executesql @SearchStr2,N'@a int output',@show_num output ; set @TotalCount=cast(@show_num as int); ---if if @TotalCount > 0 begin select @TableName ; select @SearchStr ; EXEC sp_executesql @SearchStr; end ---if FETCH NEXT FROM Cur INTO @TableName, @ColumnName; END CLOSE Cur; DEALLOCATE Cur; END
EXEC FindValueInAllTables @SearchValue = '珊珊';
廣告:
相關(guān)文章