sql server 2012 數(shù)據(jù)庫所有表里查找某字符串的方法
更新時(shí)間:2013年03月12日 14:22:49 作者:
此TSQL語句是針對(duì)SQL Server 2012編寫。如果使用之前版本,需要對(duì)部分語句進(jìn)行重寫。
復(fù)制代碼 代碼如下:
USE [數(shù)據(jù)庫名稱];
--1.定義需要查找的關(guān)鍵字。在搜索中,使用模糊搜索:LIKE '%@key_find%'
DECLARE @key_find NVARCHAR(MAX) = '123';--假設(shè)是找字符串"123"
--2.用游標(biāo)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.在表中,用游標(biāo)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.在表的字段中,對(duì)每一行進(jìn)行模糊搜索,并輸出找到的信息。
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;
相關(guān)文章
運(yùn)行asp.net程序 報(bào)錯(cuò):磁盤空間不足
未能加載文件或程序集“Ajax”或它的某一個(gè)依賴項(xiàng)。磁盤空間不足。 (異常來自 HRESULT:0x80070070)2011-10-10深入SQL Server 跨數(shù)據(jù)庫查詢的詳解
本篇文章是對(duì)SQL Server中的跨數(shù)據(jù)庫查詢進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06SqlServer創(chuàng)建自動(dòng)收縮事務(wù)日志任務(wù)的圖文教程
SQL Server數(shù)據(jù)庫存在一個(gè)問題,如果你限制了它的日志文件的大小,那么當(dāng)數(shù)據(jù)庫日志達(dá)到這個(gè)大小的時(shí)候,數(shù)據(jù)庫就會(huì)停止寫入日志,下面這篇文章主要給大家介紹了關(guān)于SqlServer創(chuàng)建自動(dòng)收縮事務(wù)日志任務(wù)的相關(guān)資料,需要的朋友可以參考下2022-09-09Sql Server 數(shù)據(jù)庫索引整理語句,自動(dòng)整理數(shù)據(jù)庫索引
我們就要定期的對(duì)數(shù)據(jù)庫的索引進(jìn)行維護(hù) 我在MSDN上發(fā)現(xiàn)了這個(gè)腳本不過其中有些小問題我已經(jīng)修正 大家可以使用這個(gè)腳本對(duì)數(shù)據(jù)庫的索引進(jìn)行日常維護(hù)2009-07-07sql server日期相減 的實(shí)現(xiàn)詳解
本篇文章是對(duì)sql server日期相減的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06SQL Server自動(dòng)更新統(tǒng)計(jì)信息的基本算法
最初接觸SQL Server的時(shí)候認(rèn)為SQLServer數(shù)據(jù)更改的同時(shí)就會(huì)相應(yīng)的更新統(tǒng)計(jì)信息,其實(shí)SQL Server不是這樣做的.基于性能考慮,SQL Server使用下面的算法更新統(tǒng)計(jì)信息2012-08-08SqlServer 復(fù)制中將大事務(wù)分成小事務(wù)分發(fā)的方法
日志讀取器代理可配置將大事務(wù)劃分為多個(gè)小事務(wù)進(jìn)行傳遞到分發(fā)數(shù)據(jù)庫中,分發(fā)隊(duì)列則按照小事務(wù)分發(fā)到訂閱數(shù)據(jù)庫中,這樣數(shù)據(jù)就很快同步2016-11-11