如何在SQL语句中声明优先级?

时间:2013-08-01 21:46:59

标签: sql database database-administration sql-like

我的问题似乎很简单,但我担心答案可能实际上有些复杂。我正在尝试执行一个简单的Select查询,其行为类似于以下内容。

以下是代码:

SELECT * FROM tbl_tbl WHERE tbl_tbl.colA LIKE '%foo%' OR tbl.tbl.colA LIKE '%oof%' AND 
   tbl_tbl.colB LIKE '%bar%' OR tbl_tbl.colB LIKE '%rab%'

所以我只是搜索4个字符串(每列2个字符串),如果我在每个字符串中找到一个字符串,我想显示整个条目。

从数学上讲,这对我来说非常有意义。

我想做(这个或那个)AND(一个或另一个),其中This / One,This / Another等的任何组合都传递表达式。

非常简单吧?

如何告诉SQL 正确(你知道吗,就像我脑海中那种模糊的方式)?

目前,我正在从我的表中获取条目,其中只有一个列规则匹配,并且这并没有给我我所寻找的优先级的特异性。

1 个答案:

答案 0 :(得分:4)

您可以使用where子句中的括号和布尔逻辑来表达它:

SELECT *
FROM tbl_tbl t
WHERE (t.colA LIKE '%foo%' OR t.colA LIKE '%oof%') AND 
      (t.colB LIKE '%bar%' OR t.colB LIKE '%bar%');

请注意,这是基于您在问题中的示例。 AND的第二个条款有两个相同的条件。我认为这是一个问题的拼写错误,但不知道正确的模式,我把它留在了答案中。