在Management Studio中,您可以右键单击表组以为表列表创建过滤器。有没有人想出一种在过滤器中包含多个表的方法?例如,我希望所有包含“br_*
”和“tbl_*
”的表格都显示出来。
任何人都知道怎么做?
答案 0 :(得分:32)
否,你不能这样做。当我们第一次使用Management Studio时,我已经尝试了您能想到的所有可能的组合:_
,%
,*
,"
,'
, &&
,&
,and
,or
,|
,||
等......
答案 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_
或您要过滤的任何内容。