Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 搜索列的特定值_Sql_Sql Server_Sql Server 2005_Sql Server 2008 - Fatal编程技术网

Sql 搜索列的特定值

Sql 搜索列的特定值,sql,sql-server,sql-server-2005,sql-server-2008,Sql,Sql Server,Sql Server 2005,Sql Server 2008,我想查询数据库中某个特定表的某个特定列中的某个特定值,比如“AYX”。我需要得到基本上具有“AYX”值的表和列的列表。我该怎么做?可能吗?我使用的是SQL SERVER 2008您需要使用动态/代码生成的查询 查看SELECT*FROM INFORMATION\u SCHEMA.COLUMNS以获取数据库中的列列表 使用该表/视图上的WHERE子句限制为适当的数据类型 代码生成执行搜索的查询:选择{TABLE_NAME}作为TABLE_NAME,{COLUMN_NAME}作为COLUMN_NAM

我想查询数据库中某个特定表的某个特定列中的某个特定值,比如“AYX”。我需要得到基本上具有“AYX”值的表和列的列表。我该怎么做?可能吗?我使用的是SQL SERVER 2008

您需要使用动态/代码生成的查询

查看
SELECT*FROM INFORMATION\u SCHEMA.COLUMNS
以获取数据库中的列列表

使用该表/视图上的WHERE子句限制为适当的数据类型

代码生成执行搜索的查询:选择{TABLE_NAME}作为TABLE_NAME,{COLUMN_NAME}作为COLUMN_NAME,COUNT(*)作为ROW_COUNT,从{TABLE_NAME}开始,其中{COLUMN_NAME}类似于“{search}%”


UNION ALL
将结果查询合并在一起(将
WHERE ROW\u COUNT 0
添加到外部查询)

您需要使用动态/代码生成的查询

查看
SELECT*FROM INFORMATION\u SCHEMA.COLUMNS
以获取数据库中的列列表

使用该表/视图上的WHERE子句限制为适当的数据类型

代码生成执行搜索的查询:选择{TABLE_NAME}作为TABLE_NAME,{COLUMN_NAME}作为COLUMN_NAME,COUNT(*)作为ROW_COUNT,从{TABLE_NAME}开始,其中{COLUMN_NAME}类似于“{search}%”


UNION ALL
将结果查询合并在一起(将
WHERE ROW\u COUNT 0
添加到外部查询)

@Aaron Bertrand有一个非常好的脚本

我只想指出,有一个免费的工具
SSMS Tools Pack
可以搜索所有表/视图中的数据


@Aaron Bertrand有一个非常好的剧本

我只想指出,有一个免费的工具
SSMS Tools Pack
可以搜索所有表/视图中的数据


你能说得更具体些吗?是否要返回至少包含一行且列值为“AYX”的表/列?还是要返回实际数据?不管列名是什么,或者仅仅是任何包含字符串的列都重要吗?@Aaron你说得对。我想返回至少包含一行且列值为“AYX”的任何表/列。你没有看到我所有的问题。什么专栏?有字符串列吗?一个特定的列名?只是想搜索所有的列和表…我知道查询需要时间…但是我怎么写呢?你试过我发布的答案了吗?你能更具体一点吗?是否要返回至少包含一行且列值为“AYX”的表/列?还是要返回实际数据?不管列名是什么,或者仅仅是任何包含字符串的列都重要吗?@Aaron你说得对。我想返回至少包含一行且列值为“AYX”的任何表/列。你没有看到我所有的问题。什么专栏?有字符串列吗?一个特定的列名?只是想搜索所有的列和表…我知道查询需要时间…但是我怎么写呢?你试过我发布的答案了吗?+1-这是一个非常彻底的答案,如果可以的话,我会投更多的票。我建议op先访问这个链接。我假设这是一个内部进程,不向最终用户公开,因此通常关于SQL注入等的警告可能会被挂起。+1-这是一个非常彻底的答案,如果可以的话,我会投更多的票。我建议op先访问这个链接。我假设这是一个内部进程,不向最终用户公开,因此通常关于SQL注入等的警告可能会被挂起。
DECLARE @string NVARCHAR(32) = N'AYX';


CREATE TABLE #results
(
    [column] NVARCHAR(768), 
    [value] NVARCHAR(MAX)
);

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += 'SELECT ''' 
    +  QUOTENAME(OBJECT_SCHEMA_NAME([object_id])) 
    + '.' + QUOTENAME(OBJECT_NAME([object_id])) 
    + '.' + QUOTENAME(name) + ''', ' + QUOTENAME(name) + ' FROM ' 
    + QUOTENAME(OBJECT_SCHEMA_NAME([object_id])) 
    + '.' + QUOTENAME(OBJECT_NAME([object_id])) 
    + ' WHERE ' + QUOTENAME(name) + ' LIKE ''%' + @string + '%'';
    '
FROM sys.columns 
WHERE system_type_id IN (35, 99, 167, 175, 231, 239)
AND OBJECTPROPERTY([object_id], 'IsMsShipped') = 0;

INSERT #results EXEC sp_executesql @sql;

SELECT [column],[value] FROM #results;

DROP TABLE #results;