有没有办法在SQL SERVER 2005数据库中搜索特定的字符串值?我有这个想要修改的图像路径值,我认为它存储在数据库中。
另外 - 有没有办法可以搜索数据库中任何表的列名?同样,在数据库中搜索表名?
答案 0 :(得分:2)
SELECT B.*
FROM information_schema.COLUMNS B
WHERE table_name
IN (SELECT A.TABLE_NAME FROM information_schema.Tables A WHERE TABLE_TYPE='BASE TABLE')
AND B.COLUMN_NAME LIKE '%yoursearchstring%'
答案 1 :(得分:1)
使用此命令获取数据库中所有表的列表。
SELECT *
FROM information_schema.Tables
用于获取表格中所有列的列表
SELECT column_name 'Column Name'
FROM information_schema.columns
WHERE table_name = MyTableName
您可以一起使用这些搜索每个表格和列来搜索您的字符串。
答案 2 :(得分:0)
可能存在一些实用程序,用于深入查看给定服务器/数据库的目录/模式,并使用此信息在所有类似文本的列中搜索给定模式的给定匹配(或部分匹配)。您甚至可以编写这样的实用程序并引入您自己的启发式算法(例如,不要搜索超过10,000行的表,因为您希望该信息是“配置类型”表等。)
更简单的方法可能是使用SQL-Profiler记录发送到服务器的每个查询(可能按IP地址,会话ID等过滤)。然后运行底层应用程序以便生成特定的字符串,您将有一个[希望]简短的查询列表,其中一个查询目标特定的表/列,因此查询路径/字符串或部分。< / p>
答案 3 :(得分:0)
有时人们会使用动态sql来搜索数据库中的每一列。它不会表现那么好,但对于像这样的一次性搜索可能非常方便。快速谷歌搜索出现了这个例子 - http://codesnippets.joyent.com/posts/show/2157 这是一个相当糟糕的例子,因为它查询每个表N次,其中N是列数(它应该只执行一次表扫描而不是N),但它可能会完成工作。您可能还希望不限制前100个字符,例如该示例。