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;
}
如果数据库上的列的名称是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]