如何查询表的数据库以获取特定的行值?

时间:2015-12-04 03:25:59

标签: sql database tsql

我正在使用一个包含~20个表的数据库,并且需要查找其中包含字符串值'fee'的表。

我如何搜索包含此内容的表?

我尝试使用

Select  t.name as table_name, c.name as column_name
from sys.columns c
    inner join sys.tables t 
            on c.object_id=t.object_id
Where c.name like '%fees%'
显然,虽然这只返回了表格,其各自的列包含“费用”一词。

有没有办法找到包含行值='费用'的表?

1 个答案:

答案 0 :(得分:1)

SQL数据库存储结构化数据,因此需要在结构中找到所需数据的正确位置。也就是说,您可以尝试多种方法,具体取决于您拥有的数据总量。

  1. 如果数据量相对较小,比如几百兆字节到几千兆字节左右,您可以将每个表转储到文本形式的文件中。然后,您可以使用像grep这样的工具来搜索包含该数据的文件。

  2. 如果数据量相当大,您可以像查询一样查询系统目录,但查询的形式可以是返回sql选择作为输出的形式。然后,您可以执行这些sql选择,以查看是否有任何返回您要查找的内容。 E.g。

    select 'select ' + c.name + ' from ' + t.name + ' where ' + c.name + ' like ''%fees%''' from sys.columns as c inner join sys.tables as t on c.object_id=t.object_id where c.system_type_id in (167, 231) -- Get the rest of these values by inspecting sys.types and t.type_desc = 'USER_TABLE'