当前我正在使用以下语句:
"SELECT categoryDB, number FROM " + dbName+ " WHERE titleDBColumn ='" + titleInput+ "'";
哪个可以帮助我找到类似于titleInput(这是一个来自外部的变量)的字符串。
但是,titleDBColumn中的值几乎总是比通过titleInput输入的字符串短。
示例:
titleDBColumn: Streetcar
titleInput: TheStreetCarIOwn
现在很明显,我需要在另一个方向上使用LIKE运算符才能获得所需的结果,但我无法正确获取格式。有任何想法吗? 对不起,如果我不清楚。
答案 0 :(得分:1)
这对我有用:
"SELECT categoryDB, number FROM " + dbName + " WHERE '" +
titleInput + "' like '%' + titleDBColumn + '%'";
答案 1 :(得分:0)
生成的SQL必须是
SELECT categoryDB, number
FROM tableName
WHERE 'input' LIKE '%' + titleDBColumn + '%'
%
通配符的意思是“任意数量的任何字符”。也就是说,'input' LIKE '%' + titleDBColumn + '%'
表示输入文本可以在列文本之前和之后包含字符。
此外,您应尽可能使用命令参数。对于您名为dbName
的表名,这是不可能的。如果此名称是在代码中定义的,而不是用户输入的,则可以像您一样安全地进行连接。但是要采取其他措施来防止SQL注入。
string sql = "SELECT categoryDB, number FROM `" + dbName +
"` WHERE @input LIKE '%' + titleDBColumn + '%'";
using (var conn = new MySqlConnection(connStr)) {
var cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@input", titleInput);
conn.Open();
var reader = cmd.ExecuteReader();
while (reader.Read())
{
...
}
}