搜索数据库中的单词

时间:2011-07-13 03:14:23

标签: sql sql-server search

我需要在一个网站上改进搜索,该搜索框只搜索完全相同的字符。如果我输入超链接,它将返回以超链接开头但不包含contenthyperlink,_hyperlink等的所有内容。这是我的SQL查询 -

    select          O_ObjectID, 
                rtrim(O_Name) as O_Name
    from            A_Object
    where           O_Name like @NamePrefix + '%'
    order by        O_Name

2 个答案:

答案 0 :(得分:1)

使用此

select          O_ObjectID, 
                rtrim(O_Name) as O_Name
    from            A_Object
    where           O_Name like   '%'+ @NamePrefix + '%'
    order by        O_Name

您需要在搜索文本的两侧放置%以匹配<anything>hyperlink<anything>。请参阅SQL运算符如何工作http://www.w3schools.com/sql/sql_like.asp。但正如Simos Mikelatos上面所说的那样,如果你使用全文搜索,你也可以通过更纤细的单词找到匹配。

答案 1 :(得分:1)

严格来说你的查询是正确的,但你真正想要的是“以'超链接'开头的单词”,这意味着会有一个空格字符,或者它将是文本字段的开头。

select          O_ObjectID, 
            rtrim(O_Name) as O_Name
from            A_Object
where           O_Name like @NamePrefix + '%' OR O_Name like '% ' + @NamePrefix + '%'
order by        O_Name

请注意'% ' + @NamePrefix + '%'

中添加的空格字符

您的另一个选择是使用全文搜索,这意味着您的查询将如下所示:

select          O_ObjectID, 
            rtrim(O_Name) as O_Name
from            A_Object
where           CONTAINS(O_Name, '"'+ @NamePrefix + '*"')
order by        O_Name

并且在此方面的表现会明显加快,因为它会在单词级别编制索引。