SQL Server - 包含查询

时间:2017-11-06 01:21:31

标签: sql sql-server contains sql-like

使用SQL Server 2014和以下数据:

ID          Address         City            State
1           55 Main St      Dallas          TX
2           4 Elm Blvd      Cupertino       CA
3           66 Walnut       Miami           FL
4           21 Main Ave     Cupertino       CA

我尝试在多个列中使用包含查询来查找匹配项,但无法找出正确的语法。在这种情况下,我有查询部分:

CONTAINS ((Address, City, State), '"main" or "cupertino")

这将返回#1,#2行和& #4。

我也可以试试这个:

CONTAINS ((Address, City, State), '"main" and "cupertino")

这不会返回任何行。

我试图弄清楚的是,我是如何使用搜索词#" main"返回第4行的。和" cupertino"使用包含查询。

所以基本上,我尝试使用包含查询来执行以下操作:

WHERE (Address LIKE '%main%' OR City LIKE '%main%' OR Zip LIKE '%main%') AND (Address LIKE '%cupertino%' OR City LIKE '%cupertino%' OR Zip LIKE '%cupertino%')

谢谢!

1 个答案:

答案 0 :(得分:2)

CONTAINS()的表达式是在每个列上独立计算的(正如您可能已经猜到的那样)。一种解决方案是尝试:

CONTAINS((Address, City, State), '"main"') AND
CONTAINS((Address, City, State), '"cupertino"')

更常规的方法是添加计算列并将其用于索引:

alter table t add acs as (Address + ' ' + City + ' ' + State) persisted;

然后在该列上构建索引。