我暂时假设您的数据库包含 4 行,在您要查询的给定列中具有以下值:
您声明您正在获得一个值,例如您需要在查询中使用的 'x:1',但您暗示查询最终应该返回前三个记录 - 值为 'x: 1'、'x:2' 和'x*'。换句话说,虽然你得到的是'x:1',但你实际上想要搜索任何值以'x'开头的记录。
如果是这种情况,您最好在发出查询之前修改 C# 代码中的值。如果您的搜索值确实是“x:1”形式,您可以在将其交给 SQL 查询之前将最后两个字符截掉:
string searchValue = "x:1"; // this presumably actually comes from user input
searchValue = searchValue.Substring(0, searchValue.Length - 2);
// Now searchValue is just "x", so go ahead and create your SQL query using the 'LIKE' operator
我觉得这只是对您的实际数据的简化,这使得它很难精确并且也使得提供包含错误检查的示例变得更加困难。
对于一个稍微复杂一点的例子,也许用户给你的搜索值可以是一串字母,或者是一串字母,后跟冒号,后跟更多字母。在这种情况下,您需要检查给定的字符串是否包含冒号,如果包含冒号,则需要将冒号及其后面的任何内容剪掉:
string searchValue = "abc:def";
if (searchValue.Contains(":"))
searchValue = searchValue.Substring(0, searchValue.IndexOf(":"));
// Having stripped off ":def", you're left with "abc"
现在您可以继续使用 LIKE 运算符发出查询,正如 TcKs 在他的回答中已经显示的那样。例如,您可以修改已有的查询代码,如下所示:
strSelect = string.Format("[{0}] LIKE '{1}'", colName, ValueToSearch);
rows = tempTable.Select(strSelect);
通过使用 LIKE 运算符,您现在正在查找任何具有以“abc”开头的值的记录。