开发者

Strange behavior when searching db for a string that contains quotes

开发者 https://www.devze.com 2023-03-10 19:44 出处:网络
I have a method that searches a database. Part of the search allows users to search by an EXACT string, using quotes. There is a particular string that I\'m having trouble with; it\'s called String \"

I have a method that searches a database. Part of the search allows users to search by an EXACT string, using quotes. There is a particular string that I'm having trouble with; it's called String "xyz". Notice the quotes around xyz. If the user puts quotes around the entire string so it looks like "String "xyz"", the database row is not returned. It does return properly when the user simply searches for String "xyz".

Here's the portion of code in question:

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;

So, result returns no results when the string being search is surrounded by quotes when there are quotes in the string, but will return results when there are quotes around a string that DOESN'T contain quotes. This seems very odd to me. Anyone know why this is?


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;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消