SQL Server 2008和/或运算符和括号

时间:2014-12-18 17:51:39

标签: sql sql-server select where sql-like

我在使用AND / OR运算符时遇到了一些麻烦。这很简单,但我遇到以下情况时遇到了麻烦:

WHERE      (ID = '111') OR (charge_desc LIKE '%garn%') OR
                      (charge_desc LIKE '%levy%') OR
                      (charge_desc LIKE '%exe%')

基本上,我正在尝试在ID 111上找到基于的关键字。但是,当前查询发生的情况是,它会根据一堆不同的内容查找这些关键字而不是ID。我试图操纵括号,我看到了问题。因为它不能像XYZ那样......"但它不能成为AND,因为如果你做AND,那么它会根据这三个标准来查找该ID。

我正在寻找ID 111并寻找garnlevyexe - 而不是" AND"但它应该是每一个变化,但只有111.

我希望这是有道理的。我对括号感到满意。

我刚试过这个:

WHERE ID = 111
HAVING garn or levy or exe

请原谅我缺乏语法。 :)

2 个答案:

答案 0 :(得分:5)

如果您绝对必须拥有id = 111,那么这是 and 关系,而不是or关系。然后,您可以在其他条件之间拥有一系列or运算符:

WHERE ID = '111' AND
      (charge_desc LIKE '%garn%' OR
       charge_desc LIKE '%levy%' OR
       charge_desc LIKE '%exe%')

答案 1 :(得分:2)

问题在于括号。

让我们来看看这个场景:

WHERE      (ID = '111') OR (charge_desc LIKE '%garn%') OR
                      (charge_desc LIKE '%levy%') OR
                      (charge_desc LIKE '%exe%')

你说的是ID = 111或者Charg_Desc,如garn ......等等。

WHERE      (ID = '111') AND 
                      (charge_desc LIKE '%garn%' OR
                      charge_desc LIKE '%levy%' OR
                      charge_desc LIKE '%exe%')

现在,您说WHERE ID = 111并且应用以下条件OR来引入额外匹配。请记住,匹配是ID匹配的补充。