相关疑难解决方法(0)

LIKE vs SQL Server上的CONTAINS

以下哪个查询更快(LIKE vs CONTAINS)?

SELECT * FROM table WHERE Column LIKE '%test%';
Run Code Online (Sandbox Code Playgroud)

要么

SELECT * FROM table WHERE Contains(Column, "test");
Run Code Online (Sandbox Code Playgroud)

sql-server performance contains sql-like

190
推荐指数
4
解决办法
89万
查看次数

SQL:查找Column包含所有给定单词的行

我有一些列EntityName,我希望用户能够通过输入以空格分隔的单词来搜索名称.该空间被隐式地视为"AND"运算符,这意味着返回的行必须具有指定的所有单词,并且不一定按给定顺序排列.

例如,如果我们有这样的行:

  1. abba nina pretty balerina
  2. acdc你整晚都在震撼我
  3. 你是我
  4. 梦幻剧院是你的全部

当用户输入:me you,或you me(结果必须等效)时,结果包含第2行和第3行.

我知道我可以这样:

WHERE Col1 LIKE '%' + word1 + '%'
  AND Col1 LIKE '%' + word2 + '%'
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更优化的解决方案.

CONTAINS将需要一个全文索引,(由于各种原因)不是一个选项.

也许Sql2008有一些针对这些案例的内置半隐藏解决方案?

sql sql-server sql-server-2008

5
推荐指数
1
解决办法
2万
查看次数

SQL SELECT only字段,其中包含单词

我有兴趣做这样的问题,我只得到结果,如果列实际上包含给它的所有单词.

举例来说,如果我有两列,一个是时间戳,另一个是天气,我想只有在天气时间戳cloudy,rainy,snowy,而不是它是否只是cloudy,rainy.上面的一个例子有点像:

SELECT distinct timestamp FROM mytable
WHERE Weather LIKE 'snowy'
   OR Weather LIKE 'cloudy'
   OR Weather LIKE 'rainy'
Run Code Online (Sandbox Code Playgroud)

哪个会返回类似的东西:

2017-09-22 snowy
2017-09-22 snowy
2017-09-22 cloudy
2017-09-22 rainy
2017-09-22 cloudy
Run Code Online (Sandbox Code Playgroud)

但不是任何结果from 2017-09-21,因为它可能只是那一天snowyrainy那一天等.

我做的上面的示例查询将返回所有时间戳,只要天气符合条件.

sql sql-server

1
推荐指数
1
解决办法
151
查看次数