程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 查找sqlserver數據庫中某一字段在 哪

查找sqlserver數據庫中某一字段在 哪

編輯:關於SqlServer

       有時候我們想通過一個值知道這個值來自數據庫的哪個表以及哪個字段,在網上搜了一下,找到一個比較好的方法,通過一個存儲過程實現的。只需要傳入一個想要查找的值,即可查詢出這個值所在的表和字段名。

      前提是要將這個存儲過程放在所查詢的數據庫。

      CREATE PROCEDURE [dbo].[SP_FindValueInDB]

      (

      @value VARCHAR(1024)

      )

      AS

      BEGIN

      -- SET NOCOUNT ON added to prevent extra result sets from

      -- interfering with SELECT statements.

      SET NOCOUNT ON;

      DECLARE @sql VARCHAR(1024)

      DECLARE @table VARCHAR(64)

      DECLARE @column VARCHAR(64)

      CREATE TABLE #t (

      tablename VARCHAR(64),

      columnname VARCHAR(64)

      )

      DECLARE TABLES CURSOR

      FOR

      SELECT o.name, c.name

      FROM syscolumns c

      INNER JOIN sysobjects o ON c.id = o.id

      WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239)

      ORDER BY o.name, c.name

      OPEN TABLES

      FETCH NEXT FROM TABLES

      INTO @table, @column

      WHILE @@FETCH_STATUS = 0

      BEGIN

      SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] '

      SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') '

      SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', '''

      SET @sql = @sql + @column + ''')'

      EXEC(@sql)

      FETCH NEXT FROM TABLES

      INTO @table, @column

      END

      CLOSE TABLES

      DEALLOCATE TABLES

      SELECT *

      FROM #t

      DROP TABLE #t

      End

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved