程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 查找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