c# - 在 SQL 2005/2008 中转义双引号

标签 c# sql sql-server full-text-search

我最近添加了一家国际公司,名为“BLA "BLAHBLAH"Ltd.(双引号是名称的一部分。)

每当用户尝试搜索这家公司时,通过输入“Blah,或其他影响,搜索失败并在 SQL 服务器中出现语法错误。

我怎样才能避免这种情况,这样搜索就不会失败?

示例 SQL:

SELECT c.companyID, c.companyName, c.dateAdded, count(cm.maxID) as NumDirect
    FROM RussoundGeneral.dbo.Company c  
         LEFT JOIN RussoundGeneral.dbo.CompanyMax cm
                ON (cm.companyId = c.companyId and cm.maxID is not null)  
    WHERE CONTAINS ( companyName,  '"BLAH*' )
    GROUP BY c.companyID, c.companyName, c.dateAdded  
    ORDER BY c.companyName ASC

最佳答案

不幸的是,双引号在 FTI 中有特殊含义,因此即使您对其进行参数化,FTI 引擎也会将其视为短语定界符。我不确定是否有一种简单的方法可以在 FTI 搜索中包含双引号。方括号也是一个特殊字符,但可以用引号括起以视为查询词 - 但不是 AFAIK 双引号。

更新

一些搜索表明将引号加倍到 ""可能会解决它 - 值得一试。就个人而言,我会在数据库中执行此操作,因为这是一个 TSQL 实现细节。

同样,在传递给 FTI 之前,' 需要加倍为 ''(完全独立于 TSQL 转义),

关于c# - 在 SQL 2005/2008 中转义双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/387198/

相关文章:

c# - 如何为用户定义的按钮创建具有已知且固定值的属性?

c# - ElasticSearch Hitboosting

用于比较历史表中列中的当前值和先前值的 SQL 查询

c# - 设置一个 C# 方法,在第一次失败后尝试重新连接到不同端口上的 SQL Server

sql - 将特定列上的 INSERT 和 UPDATE 限制为用户角色

c# - While or and not 等于不工作?

c# - Reader 没有读取 DB 值

php - 这是 MYSQL 或 PHP 错误吗?当mysql_fetch_array

c# - 根据字符串值搜索 int 列

c# - 排除在调试中构建的文件