SQL:使用Where和Or从多个列获取数据

时间:2015-05-10 14:32:09

标签: c# sql sql-server database

我需要从多列而不是一列中选择包含关键字的行,例如:

"SELECT * From UserTable WHERE Name='" + name + "'" + " OR FullName='" + name + "'""

我想从MULTIPLE COLUMNS中选择包含变量'name'的行。但是上面的查询不起作用。应该做些什么改变?

如果Name包含值,或者FullName包含该值,或者即使两者都包含该值,我也会谎言获取这些行:)当前查询给出了异常:

Incorrect syntax near the keyword 'FullName'.

我也尝试了另一个例子:

            SqlConnection cnn = new SqlConnection(conString);

            SqlCommand cmd = new SqlCommand("Select * from TheHive WHERE Variable=@variable or Group like @group", cnn);
            cmd.Parameters.Add("@Variable", SqlDbType.VarChar).Value = "wef";
            cmd.Parameters.Add("@Group", SqlDbType.VarChar).Value = "wef" + "%";

            cnn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                OpalData data = new OpalData();
                data.ID = Convert.ToInt32(rdr["id"]);
                data.CodeLine = rdr["CodeLine"].ToString();
                data.Variable = rdr["Variable"].ToString();
                data.Group = rdr["Group"].ToString();
                data.Action = rdr["Action"].ToString();
                data.Number = rdr["Number"].ToString();

                knowledge.Add(data);
            }

其Microsoft Azure表格为:

enter image description here

我仍然得到同样的错误。

我只是试图找到所有具有字符串'wef'的行,并期望输出为所有行,因为所有行都包含至少一列中的'wef'。

1 个答案:

答案 0 :(得分:0)

我将假设你有一种情况,其中Name是像Joe一样的名字,FullName就像Joe Smith,你想要找到Joe的名字或者包含Joe的FullName。所以它应该是:

"SELECT * From UsersTable WHERE Name='" + name + "' OR FullName like '" + name + "%'";

好的,这对我有用:

    SqlCommand cmd;
    SqlDataReader dr;
    string ConnectionString = ConfigurationManager.AppSettings["ConnectionString"];
    string name = "Joe";

    SqlConnection cnn = new SqlConnection(ConnectionString);

    cmd = new SqlCommand("Select * from t_Users WHERE Name=@name or FullName like @fullname", cnn);
    cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = name;
    cmd.Parameters.Add("@fullname", SqlDbType.VarChar).Value = name + "%";

    cnn.Open();
    dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    }