Sql查询搜索所有列

时间:2015-02-25 16:29:47

标签: sql sql-server tsql

我创建了一个搜索作为Windows操作系统,例如,当您键入单词USA时,查询应该搜索包含单词USA的所有列。如果我使用" OR"在每个条件之后,结果将是条件为真时的所有数据,查询将不会检查所有列。

下面的示例,我想搜索单词USA并应该给我带来第1行和第3行,因为你可以看到我在第一行中有美国,在NAME列和3行中我在列中有美国关键:

ID NAME KEY
1  USA  USA13CAN
2  CAN  CAN65464MEX
3  MEX  MEX4978USA
4  BRA  BR66544BRA
5  FRA  FR5446CAN

我该怎么办?使用下面的这个脚本,不起作用,因为在第一个条件成立后,验证将停止。

SELECT * 
  FROM COUNTRY 
 WHERE NAME LIKE '%USA%' 
    OR DESCR LIKE '%USA%' 
    OR KEY LIKE '%USA%'

1 个答案:

答案 0 :(得分:1)

  

我该怎么办?使用下面的这个脚本,不起作用,因为在第一个条件成立后,验证将停止。

我不确定你的意思。如果第一部分(NAME LIKE '%USA%')评估为true,则将返回记录,这正是您想要的。如果该部分评估为false,则会继续到下一部分(OR之后)。

如果我想要NAMEDESCR包含foo的所有记录,您的方法似乎没问题,声明

SELECT *
  FROM table
 WHERE name LIKE '%foo%'
    OR descr LIKE '%foo%'

应该完全按照自己的意愿行事。