【问题标题】:How do you search for a & (ampersand) in the tsql contains function?如何在 tsql contains 函数中搜索 &(与号)?
【发布时间】:2010-10-17 10:20:06
【问题描述】:

我有一个表 T,它的列 C 包含包含字符 & 的文本,但如果我执行以下查询,它什么也不返回,尽管我可能有 10 行。

SELECT * FROM T WHERE Contains(C, 'a&b')

【问题讨论】:

  • 你说你在找 & 但后来你找 a&b
  • 我的意思是在这种情况下我正在寻找字符串 a&b,但由于某种原因,使用 & 字符会使 contains 什么也不返回。

标签: sql sql-server tsql full-text-search


【解决方案1】:

使用双引号使其成为搜索词:

SELECT *
FROM T
WHERE CONTAINS(C, '"a&b"')

否则,您正在搜索具有 AND b 的内容。

【讨论】:

    【解决方案2】:

    改用lik​​e:

    SELECT * FROM T WHERE C like '%&%'
    

    如果你只是在寻找 &

    SELECT * FROM T WHERE C like '%a&b%'
    

    如果需要搜索a&b

    【讨论】:

      【解决方案3】:

      你能用 LIKE 代替 contains 吗?

      SELECT * FROM T WHERE C LIKE '%a&b%'
      

      【讨论】:

        【解决方案4】:

        我所做的是创建列的副本,用 _ 替换 & 和其他非字母数字字符。然后我可以做到这一点。

        SELECT * FROM T WHERE Contains(C_searchable, 'a_b')
        

        【讨论】:

        • 所以 Contains 不会自动将 & 更改为 _?
        • 不,它将 & 视为分词器。它将“a&b”视为与“a b”相同
        猜你喜欢
        • 2014-04-14
        • 1970-01-01
        • 1970-01-01
        • 2013-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 2018-06-14
        相关资源
        最近更新 更多