搜索列的特定值

时间:2011-08-19 18:09:51

标签: sql sql-server sql-server-2005 sql-server-2008

我想查询一个特定的值,让我们在数据库的某个特定表的某个特定列中说“AYX”。我需要获取表和列的列表,基本上具有“AYX”的值。我该怎么办?去吧?有可能吗?我正在使用SQL SERVER 2008

3 个答案:

答案 0 :(得分:3)

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;

答案 1 :(得分:1)

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

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

SSMS Tools Pack

答案 2 :(得分:0)

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

查看SELECT * FROM INFORMATION_SCHEMA.COLUMNS以获取数据库中的列列表。

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

代码生成执行搜索的查询:SELECT '{TABLE_NAME}' AS TABLE_NAME, '{COLUMN_NAME}' AS COLUMN_NAME, COUNT(*) AS ROW_COUNT FROM {TABLE_NAME} WHERE {COLUMN_NAME} LIKE '%{SEARCH}%'

UNION ALL生成的查询在一起(将WHERE ROW_COUNT <> 0添加到外部查询中)