字段包含多个值,我只需要查询一个?

Field contains multiple values, I need to query on just one?

我有一个访问数据库,其中一列包含多个字符串,如下所示

Header
MultipleStrings
Does,Not,Query

我需要基于单个值进行查询,即如果我查询 "Does",这将提取包含 Does,Not,Query 的行。

下面是我试过的代码(注释掉的是不起作用的)

string strCon = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Users\mydocs\Documents\Database4.accdb;";
//string strSql = "select ID, TestField, TestField3 from Table1 where MultipleStrings like'" + ThisVar + "'";
string strSql = "Select * from Table1";

using (OdbcConnection con = new OdbcConnection(strCon))
using (OdbcDataAdapter dadapter = new OdbcDataAdapter(strSql, con))
{
    DataTable table = new DataTable();
    dadapter.Fill(table);

    this.dataGridView1.DataSource = table;
}

基本上,我不希望它显示 MultipleStrings 列 - 但我想根据此列中的值过滤行,我假设我会像 Containslike 查询,但这似乎不起作用并且 returns 根本没有行。

更新:-

我已经按照建议尝试了以下方法:

string strSql = "select * from Table1 where MultipleStrings LIKE '@Search'";
using (OdbcConnection con = new OdbcConnection(strCon))
using (OdbcDataAdapter dadapter = new OdbcDataAdapter(strSql, con))
{
    DataTable table = new DataTable();
    dadapter.SelectCommand.Parameters.Add("@Search", OleDbType.VarChar).Value = "%" + ThisVar + "%";
    dadapter.Fill(table);
    this.dataGridView1.DataSource = table;
}

这仍然返回一个空白行,其中没有任何内容。

最终答案:-

ThisVar = "Query";
string strCon = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Users\MyDocs\Documents\Database4.accdb;";
string strSql = "select ID,TestField,TestField3,TestCheck,TestCheck2 from Table1 where MultipleStrings LIKE '%"+ThisVar+"%'";
using (OdbcConnection con = new OdbcConnection(strCon))
using (OdbcDataAdapter dadapter = new OdbcDataAdapter(strSql, con))
{
    DataTable table = new DataTable();
    dadapter.Fill(table);
    this.dataGridView1.DataSource = table;
}

TL;DR - Access DB 查询可以从用“,”分隔的一组字符串中提取单个字符串

您需要使用 * 来匹配任意长度的任意字符串 使用像 '"+var+"'";

使用Like并且不要忘记添加%。也使用 parameterized queries 来避免 SQL 注入。像这样:

string strSql = "select * from Table1 where MultipleStrings LIKE @Search";
...
using (OdbcDataAdapter dadapter = new OdbcDataAdapter(strSql, con))
{
    dadapter.SelectCommand.Parameters.Add("@Search", OleDbType.VarChar).Value = "%" + ThisVar + "%";
    ...