在数据库中搜索包含引号的字符串时的奇怪行为

本文关键字:字符串 搜索 包含引 数据库 | 更新日期: 2023-09-27 17:58:30

我有一个搜索数据库的方法。部分搜索允许用户使用引号按精确字符串进行搜索。我遇到了一个特殊的字符串问题;它被称为CCD_ 1。注意xyz周围的引号。如果用户在整个字符串周围加引号,使其看起来像"String "xyz"",则不会返回数据库行。当用户简单地搜索String "xyz"时,它确实会正确返回。

以下是有问题的代码部分:

bool isExactSearchString = false;
if (searchString.StartsWith("'"") && searchString.EndsWith("'""))
{
    // remove first and last quotes
    searchString = searchString.Remove(0, 1);
    searchString = searchString.Remove(searchString.Length - 1, 1);
    isExactSearchString = true;
}
var result = from d in repository.GetAllTheTableRows()
             where (isExactSearchString ? d.Column == searchString : d.Column.Contains(searchString))
             select d.Driver;

因此,当搜索字符串中有引号时,当字符串被引号包围时,result不会返回任何结果,但当字符串中有不包含引号的引号时,会返回结果。我觉得这很奇怪。有人知道为什么吗?

在数据库中搜索包含引号的字符串时的奇怪行为

if (searchString.StartsWith("'"") && searchString.EndsWith("'""))
{
    // remove first and last quotes
    searchString = searchString.Remove(0, 1);
    searchString = searchString.Remove(searchString.Length - 1, 1);
    //
    // Replace all occurrences of " in searchString with '"
    //
    isExactSearchString = true;
}