1

此查询将在数据库中搜索特定列名。我想更进一步,在返回的列中搜索特定值。

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name,
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%Example%'

有任何想法吗?

非常感谢

4

2 回答 2

3

例如,我有一个名为Organization的数据库。我有不止一张表,其中tax_id列存在。

大多数时候,我们必须从整个数据库中找到这样一个列。 解决方案如下:

select table_name,column_name from information_schema.columns
where column_name like '%tax%'

在查询数据库名称时,您只需要更改愿意的列名并找到所需的结果

搜索任何值,例如整个数据库中的计算机,在哪个列和哪个表中存在值计算机

首先,我们需要编写一个存储过程,然后我们将它重用于我们的搜索,我从http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm获得了非常完美的结果。执行存储过程后,我们得到了所需的结果,如下图所示。图像显示了整个数据库中关键字计算机的完整搜索结果。 显示整个数据库中关键字计算机的完整搜索结果的图像

以上是解决它的概念。以下是满足上述要求的确切查询

Select tax_id from (select table_name from information_schema.columns
where column_name = 'tax_id') as temp
于 2013-12-11T18:11:28.627 回答
2

这种搜索不存在这样的系统表。而你可以根据你的目的尝试这个

DECLARE @ValueToSearch NVARCHAR(500)
DECLARE @SearchColumn NVARCHAR(100)
DECLARE @TableName NVARCHAR(200)
DECLARE @ColumnName NVARCHAR(200)
SET @ValueToSearch ='YOUR VALUE TP SEARCH'
SET @SearchColumn = 'YOUR COLUMN'
DECLARE @getResult CURSOR
SET @getResult = CURSOR FOR
    SELECT t.name AS table_name,c.name AS column_name FROM sys.tables AS t INNER JOIN     sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE c.name = @SearchColumn
    OPEN @getResult
    FETCH NEXT FROM @getResult INTO @TableName,@ColumnName
    WHILE @@FETCH_STATUS = 0
    BEGIN
        SET NOCOUNT ON ;
        DECLARE @RESULT INT; 
        DECLARE @TYPE INT
        DECLARE @QUERY NVARCHAR(1000)
        SET @QUERY = 'select @RESULT=count(*) from ' + ISNULL(@TableName,'') +'     WHERE '+ ISNULL(@ColumnName,'')+'='''+ ISNULL(@ValueToSearch,'') +''''
        EXEC sp_executesql @QUERY,
            N'@result int OUTPUT, @type int OUTPUT',
            @RESULT OUTPUT, 
            @TYPE OUTPUT
        IF(ISNULL(@RESULT,0)>0)
        BEGIN
            SET NOCOUNT ON;
        SELECT ' COLUMN '+ @ColumnName + ' OF TABLE ' +@TableName+ ' HAS     THIS VALUE.'
        END
        FETCH NEXT FROM @getResult INTO @TableName,@ColumnName
    END
CLOSE @getResult
DEALLOCATE @getResult

谢谢

马诺伊

于 2013-06-28T11:20:34.763 回答