SQL Select 语句排除数据

Posted

技术标签:

【中文标题】SQL Select 语句排除数据【英文标题】:SQL Select statement to exclude data 【发布时间】:2014-03-26 17:18:33 【问题描述】:

我正在尝试编写 SQL 查询以在 Configuration Manager 2012 中设置动态集合。我当前的查询是

select * from SMS_R_System where SMS_R_System.Name LIKE 'cmgr%'

这将获取以cmgr 开头的任何服务器名称并将其放入指定的集合中。

我的问题是我需要在此查询中添加另一个语句以排除包含以下条目 qwdwtw 的服务器。这将防止我的非生产服务器被放入生产集合中。

我对 SQL 脚本的了解非常有限,因此感谢任何反馈。

【问题讨论】:

哪个字段包含条目'qw'、'dw'、'tw'? Adam,服务器名称为 serverappPW1 或 serverappQW1。它们是整个服务器名称的一部分,这是我们区分生产和非生产的方式... 什么是 Configuration Manager 2012? 配置管理器 2012 是 Microsoft System Center Suite 产品(以前称为 SMS)的一部分。用于软件分发、补丁管理和系统远程管理。 【参考方案1】:

你能用这样的东西吗?

select * from SMS_R_System 
where SMS_R_System.Name LIKE 'cmgr%'
AND SMS_R_System.Name NOT LIKE '%qw%' 
AND SMS_R_System.Name NOT LIKE '%dw%' 
AND SMS_R_System.Name  NOT LIKE '%tw%'

【讨论】:

Roryap,谢谢。这可能会奏效。将服务器放入 Config Mgr 后,我需要进行测试。我会让你知道...再次感谢 您好,感谢您对此的所有建议。查询一直在工作,但我没有更复杂的查询。我有一个包含多个服务器名称的集合。我可以通过添加 OR 语句来更新我现有的查询。它看起来像这样: select * from SMS_R_System where SMS_R_System.Name LIKE 'acl%' OR SMS_R_System.Name LIKE 'bre%' OR SMS_R_System.Name LIKE 'eps%' OR SMS_R_System.Name LIKE 'hrk%' AND SMS_R_System .Name NOT LIKE '%qw%' AND SMS_R_System.Name NOT LIKE '%dw%' AND SMS_R_System.Name NOT LIKE '%tw%' 现在的问题是 AND 语句未被识别为具有 qw、dw 和tw 正在从查询中返回。关于如何使这一切正常工作的任何想法?顺便说一句,Config Mgr 是 Microsoft System Center Configuration Manager....谢谢【参考方案2】:

您可能想看看that previous answer,它谈到了在查询中使用NOT EXISTS 命令。

【讨论】:

以上是关于SQL Select 语句排除数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Oracle Sql 中的 Select 语句中根据条件排除和包含列标题

寻找一种从 select 语句的后半部分排除 select 语句变量的方法

SQL 语句 - 排除某些数据

sql语句 怎么在第一次查询完的结果 以外的内容中继续查询

Asp.net中SQL语句的写法

oracle入门之对表数据查询