3

当我返回一个带有字母“A”的产品列表时,它显然会返回所有以字母“A”开头的产品。

我还想退回所有以字母“A”开头的产品和开头也有“The”的产品。我也想更好地了解如何做到这一点的最佳方法。您会使用纯 MS SQL 还是使用 ASP.NET 传递参数?

例如,当我搜索带有字母“R”的产品时,我目前返回这个

  • 洛基
  • 洛基 2

示例代码

 SELECT title
 FROM   dbo.product
 WHERE (title LIKE 'R%')

我希望它返回..例如...

  • 岩石
  • 洛基
  • 洛基 2

更新:感谢您对此的所有帮助。我将进一步研究全文搜索。但对于 intrum,我将使用...

  SELECT title
  FROM   dbo.product
  WHERE (title LIKE 'The R%') OR
        (title LIKE 'R%')
4

4 回答 4

4

试试这个——

SELECT title
FROM dbo.product
WHERE title LIKE '%R%'
于 2013-07-09T11:58:39.947 回答
4

你想说where title like '%Rock%'

PS 如果您想获取所有包含以字母 R 开头的单词的产品,您可以这样做:

  `where title like '% R%' or title like 'R%'`

注意第一项中的空格。如果你不包括空间,你Poptarts也会得到。

于 2013-07-09T11:59:16.103 回答
3

如果您只是想返回:

  • 岩石
  • 洛基
  • 洛基 2

然后使用:

WHERE (title LIKE '%R%')

它应该工作。

如果您想在文本搜索方面使用 SQL Server 做更复杂的事情,请查看 SQL Server 的全文搜索功能。

于 2013-07-09T11:59:52.737 回答
3

要从标题前面专门排除“The”:

SELECT title
FROM dbo.product
WHERE title LIKE 'R%'
OR title LIKE 'The R%'

这种方法的优点是避免使用前导通配符,这会破坏索引查找。如果您有一个要忽略的前导词列表,则可以使用一组搜索字符串,例如“R%”、“R%”、“AR%”、“R%”等。(但是,IN 列表不适用于通配符。)

于 2013-07-09T12:03:02.687 回答