选择列不等于某个值的任何数据

时间:2016-10-31 04:21:27

标签: sql-server tsql sql-server-2012

尝试选择BAD_PRD不等于'坏' 但是当我没有" BAD_PRD!=' bad'" 或者当使用" BAD_PRD为空时" 它给出了结果,不确定我是否可以使用!= here:

select * FROM cte c WHERE rn = 1 and [BAD_PRD] != 'bad'

感谢, 小号

4 个答案:

答案 0 :(得分:0)

您可以为类似Select语句的模式应用like运算符

select * FROM cte c WHERE rn = 1 and [BAD_PRD] NOT LIKE 'bad%'

评论后编辑:假设[BAD_PRD]列有空值。

select * FROM cte c WHERE rn = 1 and ([BAD_PRD] NOT LIKE 'bad%' OR [BAD_PRD] is null)

答案 1 :(得分:0)

试试这个:

where not (BAD_PRD= 'bad')

select * FROM cte c WHERE rn = 1 and BAD_PRD not like 'bad'

如果使用Collate,如何使查询区分大小写并从上面的查询中仅检索不等于('bad')的记录,则需要更改查询的排序规则,如下所示:

select * FROM cte c WHERE rn = 1 and BAD_PRD != 'bad' COLLATE Latin1_General_CS_AS

select * FROM cte c WHERE rn = 1 and [BAD_PRD] COLLATE Latin1_General_CS_AS != 'bad'

答案 2 :(得分:0)

你是对的,你不能使用!=这里。 但是你至少有两种选择。 第一个是你确实“坏”的地方。 BAD_PRD列中的值。

SELECT * 
FROM tblSomeTable
WHERE (rn = 1) AND (BAD_PRD <> 'bad' OR BAD_PRD IS NULL)

但是现在,如果你没有完全错误的话,该怎么办呢?价值,但像“糟糕的天气”这样的东西。或者&#39; badd&#39;或者&#39; amrashbadda&#39;。 对于那些你可以尝试使用所谓的通配符工作的LIKE命令,在这种情况下&#39;%&#39;。

SELECT * 
FROM tblSomeTable
WHERE (rn = 1) AND (BAD_PRD NOT LIKE '%bad%' OR BAD_PRD IS NULL)

我所说的&#39;%bla%&#39;就是它会在“坏”之前和之后找到零个或多个字符。串。如果您有兴趣,可以阅读LIKE here上的更多内容。

如果你仍有问题,我会尝试用更简单的查询结账,看看我能得到什么。这是一些。

SELECT *
FROM tblSomeTable
WHERE rn = 1;

这个用于检查LIKE甚至可以在您的列上工作。如果它显示空结果集,那么您可以检查该列更近,因为它可能不包含“坏”#。

SELECT *
FROM tblSomeTable
WHERE BAD_PRD NOT LIKE '%bad%';

答案 3 :(得分:0)

请试试这个 select * FROM cte c WHERE rn = 1 and [BAD_PRD]&lt;&gt; &#39;坏&#39; 您将获得所有数据,其值等于1和[BAD_PRD]值,除了包含“坏”&#39;