標籤:sql server多表搜尋字串
SQL Server多表搜尋字串
我們前面介紹了一些關於SQL Server 的很多文章,今天我們主要介紹一下SQL Server下在不知道表名的情況下進行搜尋字串,我們都知道,在一個資料庫下會有多張表單的時候,我們所要尋找的內容不知道在哪個表單中,那怎麼辦呢?今天我們就通過編寫SQL 陳述式來解決這個問題;
我們DB4資料庫下測試建立了兩張表,分別插入了一些資料;具體見下表;
我們測試在兩張表中都插入了一條相同的資料,在uname欄位中搜尋zs這個字串;
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/07/4E/wKiom1nHV_CyGRuPAAEoFJdRwZM529.png-wh_500x0-wm_3-wmp_4-s_2551988444.png" title="1.png" width="600" height="395" border="0" hspace="0" vspace="0" style="width:600px;height:395px;" alt="wKiom1nHV_CyGRuPAAEoFJdRwZM529.png-wh_50" />
我們編寫的SQL 陳述式;
declare @string varchar(30)set @string = ‘zs‘ --替換為要尋找的字串DECLARE @tabName VARCHAR(40),@colName VARCHAR(40)DECLARE @sql VARCHAR(2000)declare @tsql varchar(8000)DECLARE tabCursor CURSOR FORSELECT name from sysobjects WHERE xtype = ‘u‘ AND name <> ‘dtproperties‘OPEN tabCursorFETCH NEXT from tabCursor INTO @tabNameWHILE @@fetch_status = 0BEGINset @tsql = ‘‘DECLARE colCursor CURSOR FOR Select Name from SysColumns Where id=Object_Id(@tabName) and xtype=167OPEN colCursorFETCH NEXT from colCursor INTO @colNameWHILE @@fetch_status = 0BEGINSET @sql = ‘if(exists(select * from ‘ + @tabName + ‘ where ‘SET @sql = @sql + @colName + ‘ like ‘‘%‘ + @string + ‘%‘‘)) begin select * from ‘set @sql = @sql + @tabName + ‘ where ‘ + @colName + ‘ like ‘‘%‘ + @string + ‘%‘‘;select ‘‘‘+ @tabName + ‘‘‘ as TableName end‘set @tsql = @tsql + @sql + ‘;‘FETCH NEXT from colCursor INTO @colNameENDexec(@tsql)CLOSE colCursorDEALLOCATE colCursorFETCH NEXT from tabCursor INTO @tabNameENDCLOSE tabCursorDEALLOCATE tabCursor
執行後,會顯示執行結果;
搜尋的字串顯示列資訊及表資訊;
結構zs字串在info表中第一列,然後通過在tb_info表中的第一行中
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/07/4E/wKiom1nHWAvQVpWuAAJZKZiKS0Y245.png-wh_500x0-wm_3-wmp_4-s_1559955324.png" title="2.png" width="800" height="526" border="0" hspace="0" vspace="0" style="width:800px;height:526px;" alt="wKiom1nHWAvQVpWuAAJZKZiKS0Y245.png-wh_50" />
本文出自 “高文龍” 部落格,謝絕轉載!
SQL Server多表搜尋字串