我正在使用以下SQL查询来搜索数据库。
string sql = "SELECT [identifier] FROM [information] WHERE [identifier] LIKE '" + identifier + "%'"
;
当我输入“m”搜索“Microsoft”时,它找到了Microsoft但是如果我输入“o”则找不到Microsoft。
如何更改SQL以便找到包含该特定单词的所有内容?
答案 0 :(得分:0)
搜索字母o
时,它搜索字符串 Microsoft 的原因是因为您的条件会根据起始字符进行过滤。
这种情况,
... WHERE [identifier] LIKE 'o%'
表示 ..给我所有以字符o
开头的字符串。如果要搜索contains
字符o
的字符串,则应使用%%
进行包装。例如,
... WHERE [identifier] LIKE '%o%'
作为旁注,您应该参数化值以避免SQL Injection
。
试试这段代码:
string connStr = "connection string here";
string content = string.Format("{0}{1}{0}", "%", identifier);
string sqlStatement = "SELECT [identifier] FROM [information] WHERE [identifier] LIKE ?";
using (SqlConnection conn = new SqlConnection(connStr))
{
using(SqlCommand comm = new SqlCommand())
{
comm.Connection = conn;
comm.CommandText = sqlStatement;
comm.CommandType = CommandType.Text;
comm.Parameters.AddWithValue("@content", content);
try
{
conn.Open();
// other codes
}
catch(SqlException e)
{
// do something with the exception
// do not hide it
// e.Message.ToString()
}
}
}
正确编码
using
语句进行适当的对象处理try-catch
块来正确处理异常答案 1 :(得分:0)
string sql = "SELECT [identifier] FROM [information] WHERE INSTR([identifier]," + identifier +") != 0 ";