如何在SQL Server数据库中设置多条件筛选以显示指定表?
如何在SQL Server中筛选名称同时包含K和L的表
嘿,我来帮你搞定这个问题!首先得说清楚:SSMS对象资源管理器里那个默认的筛选输入框,其实只能做单条件的模糊匹配,你直接输K、L的话,系统会以为你要找名字里包含"K、L"这个完整字符串的表,而不是同时有K和L的表,这就是为啥没结果啦。
下面给你两个靠谱的解决方案:
方案一:用T-SQL查询直接筛选(首推!)
这是最灵活也最靠谱的方式,直接查系统视图就能精准筛选:
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' -- 只找用户创建的表,排除视图 AND TABLE_NAME LIKE '%K%' AND TABLE_NAME LIKE '%L%'; -- 同时包含K和L,不管顺序哦
要是你需要区分大小写(默认SQL Server是不区分的),可以加个排序规则:
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME COLLATE SQL_Latin1_General_CP1_CS_AS LIKE '%K%' AND TABLE_NAME COLLATE SQL_Latin1_General_CP1_CS_AS LIKE '%L%';
方案二:试试SSMS筛选器的高级设置(看版本)
有些新版本的SSMS支持多条件筛选,步骤是这样的:
- 右键对象管理器里的"Tables" → "Filter" → "Filter Settings"
- 在弹出的窗口里点**"Add Condition"**,添加两个关于
Name的条件:- 第一个:
Name选"Contains",值填K - 第二个:
Name选"Contains",值填L
- 第一个:
- 注意看条件之间的逻辑是AND(默认一般就是AND,确认下)
- 点"OK"就能看到结果啦
不过要提一句,旧版本的SSMS可能不支持这个多条件AND的功能,这时候方案一就绝对好使。
额外说下:要是你需要K必须在L前面,那就把LIKE条件改成
TABLE_NAME LIKE '%K%L%',这样就只会匹配K在L前面的表啦。
内容的提问来源于stack exchange,提问作者Riz




