Странное поведение при поиске в БД строки, содержащей кавычки - PullRequest
0 голосов
/ 07 июня 2011

У меня есть метод, который ищет базу данных.Часть поиска позволяет пользователям искать по ТОЧНОЙ строке, используя кавычки.Есть определенная строка, с которой у меня проблемы;это называется String "xyz".Обратите внимание на кавычки вокруг 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 не возвращает результатов, когда строка ищетокружен кавычками, когда в строке есть кавычки, но вернет результаты, если вокруг строки есть кавычки, которые НЕ содержат кавычек.Это кажется мне очень странным.Кто-нибудь знает, почему это так?

1 Ответ

0 голосов
/ 07 июня 2011
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;
}
...