Sql查询帮助,语法错误

本文关键字:语法 错误 帮助 查询 Sql | 更新日期: 2023-09-27 18:01:39

为什么不工作?这是关于=附近的命令字符串语法的一些东西,但我似乎无法弄清楚,在线示例似乎完全相同。编辑: Activated In是一个列。

示例来自如何从数据库中选择具有许多过滤器选项的数据?

private void btnDist_Click(object sender, EventArgs e)
{
    string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated In = '#NA'";
    SqlDataAdapter adapter = new SqlDataAdapter(cmdText, GetConnection());
    DataSet distDS = new DataSet();
    adapter.Fill(distDS);
    dataGridView1.DataSource = distDS.Tables[0].DefaultView;
}

Sql查询帮助,语法错误

如果数据库上的列的名称是Activated In(带空格),那么在查询中引用对象/列名时需要使用方括号,例如:

SELECT * FROM Inventory WHERE Rep <> '#NA' AND [Activated In] = '#NA'

这是因为SQL在查询语言中将空格作为分隔符——方括号用于"转义"名称中的空格(和其他字符)。

或者,如果列只是称为Activated,那么您不需要IN位-要么测试是否相等,要么测试是否在给定范围内,但不要同时进行。

-- Use this
SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'
-- Or this
SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated IN ('#NA', 'Some other value')

更改您的查询为There is no need of IN keyword

SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'"

IN -当您想从列表或子查询中过滤出数据时使用。

In关键字的使用如下:

...AND Activated IN ('#NA')
...AND Activated IN ('#NA', 'other filter value', 'more filter values')

Activated In = '#NA'"

必须是Activated In ('#NA')"Activated = '#NA'"
SQL中的In操作符是保留的

删除In后的=

string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated In ('#NA')";

您可能还想使用=而不是In,因为您只指定了一个项目。

string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'";

如果Activated In是列,则使用:

string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND [Activated In] = '#NA'";

Activated In是列吗?那么应该是ActivatedIn或者[Activated In]