代码之家  ›  专栏  ›  技术社区  ›  Avrom

从SQL Server全文搜索中排除撇号

  •  4
  • Avrom  · 技术社区  · 14 年前

    例如,如果有人输入“o'brien”或“obrien”的搜索词,我希望它匹配所有与“o'brien”或“obrien”匹配的名字。

    但是,如果我搜索:

    select * from MyTable where contains (fullName, '"o''Brien*"')
    

    它只返回带撇号的。 但如果我这么做了:

    select * from MyTable where contains (fullName, '"oBrien*"')
    

    它只返回不带撇号的。

    简而言之,我想知道FTS是否有可能将“O'Brien”和“OBrien”都索引为“OBrien”,这样我就可以同时找到这两个。

    而解决方案是:

    select * from MyTable where contains (fullName, '"oBrien*" OR "o''Brien*"')
    

    我正在寻找一个同时适用于SQLServer2005和2008的解决方案。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Beth    14 年前

    根据空间大小,可以添加另一列

    全名\u不定时

    只包含名称的字母字符,从搜索条件中去掉标点,改为搜索无标点的列。