zoukankan      html  css  js  c++  java
  • 查询字段的值属于数据库中的哪个表的哪个列

    输入数据库中包含的某一个字段的值查询到它所归属的表和字段,返回两列数据,第一列是此值归属的表名;第二列是此值对应的第一列中的表的列名。sql实现如下:

    USE [数据库名]
    GO
    /****** Object:  StoredProcedure [dbo].[SP_FindValueInDB]    Script Date: 2017/3/5 10:35:01 
    --此存储过程用于查询一个值属于数据库中的那张表的哪个列,返回结果为两列,一列是表名,一列是列名
    ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER 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 
  • 相关阅读:
    线程高并发
    29(套接字)就是网络编程
    28线程
    27 枚举
    26静态导入和可变参数
    25JDK新特性
    25断言 assert关键字
    24单元测试 junit
    炫酷CSS
    PHP 汉字转拼音类
  • 原文地址:https://www.cnblogs.com/shuilangyizu/p/6506068.html
Copyright © 2011-2022 走看看