SQL Server Management Studio - 在表列表中使用多个过滤器?

时间:2009-06-01 17:35:48

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

在Management Studio中,您可以右键单击表组以为表列表创建过滤器。有没有人想出一种在过滤器中包含多个表的方法?例如,我希望所有包含“br_*”和“tbl_*”的表格都显示出来。

任何人都知道怎么做?

10 个答案:

答案 0 :(得分:32)

,你不能这样做。当我们第一次使用Management Studio时,我已经尝试了您能想到的所有可能的组合:_%*"'&&&andor|||等......

答案 1 :(得分:6)

您可以将自己的插件推送到SMSS,以便您可以按照自己的意愿行事:

The Black Art of Writing a SQL Server Management Studio 2005 Add-In

Extend Functionality in SQL Server 2005 Management Studio with Add-ins

第一个是专门用于搜索和显示具有给定名称的所有模式对象,因此您可以根据需要对其进行扩展。

答案 2 :(得分:2)

首先看起来它可以使用CONTAINS查询(例如"br_*" OR "tbl_*"),但似乎并非如此。它似乎只支持一个值,然后传递给LIKE子句(例如'app'变为'%app%')。

答案 3 :(得分:2)

我使用Toad for SQL Server(免费软件版本),它有非常好的过滤选项。

答案 4 :(得分:2)

我正在使用SQL Server Management Studio v17.1,它的过滤器构造中有一个SQL注入错误,因此您实际上可以逃避默认

tbl.name like '%xxx%' 

并编写自己的查询(有一些限制)。例如,要过滤以“_arch”,“_hist”,“_ purge”结尾的表格,我使用了以下过滤值

_arch') and RIGHT(tbl.name, 5) != N'purge' and RIGHT(tbl.name, 4) != N'hist' and not(tbl.name like N'bbb

您可以使用SQL Server Profiler查看构造的查询并根据需要进行调整。

不确定以前的SQL Management Studio版本中是否存在此相同的错误,或者何时修复该错误,但现在我对结果感到满意。

答案 5 :(得分:1)

“sql 注入”方法仍然有效(v17.5),但有一个转折:

zzzz' or charindex('pattern1',  name) > 0  or charindex('pattern2', name) > 0 or name like 'zzzz

(我用'zzzz'绕过'%')

如果在模式中(或代码中的任何地方)使用了 '_' 或 '%',它就不起作用,因为它会在评估前自动替换为 '[_]' 或 '[%]'。

答案 6 :(得分:0)

正如其他人所说,你不能在SQL Server Management Studio中执行此操作(包括2014年)。

以下查询将为您提供已过滤的表格列表(如果这就是您所需要的):

SELECT
    CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) AS TABLE_SCHEMA_AND_NAME,
    TABLE_SCHEMA,
    TABLE_NAME
FROM
    INFORMATION_SCHEMA.TABLES
WHERE
    TABLE_SCHEMA IN ('X', 'Y', 'Z') -- schemas go here
ORDER BY
    TABLE_SCHEMA,
    TABLE_NAME;

答案 7 :(得分:0)

从SSMS 2017 v17.8.1起,SQL注入方法仍然(在某种程度上)有效,尽管它在%符号两边加上了方括号,因此它将按字面意义进行解释。

如果您使用“名称”->“包含”过滤器,Profiler将显示: ... AND dtb.name LIKE N'%MyDatabase1%')

因此,在“名称”->“包含”字段中:MyDatabase1') OR (dtb.name LIKE 'MyDatabase2应该用于简单的情况。

答案 8 :(得分:-1)

你好运,我刚刚征服了这个专长,虽然我的成功很小,因为你可以通过架构过滤,这样你可以看到多个表,但你必须在每次想要更改它时输入过滤器文本。

答案 9 :(得分:-2)

我知道这已经过时了,但如果您只输入“过滤器”文字,那么它很有用。跳过*%或任何其他标准搜索字符,只需输入br_tbl_或您要过滤的任何内容。