在 'GROUP' 附近预期条件的上下文中指定的非布尔类型的表达式
An expression of non-boolean type specified in a context where a condition is expected, near 'GROUP'
大家好,我一直收到此错误,但我无法解决。它在我 运行 数据库工具中的查询时有效,但在我的 Microsoft web 开发中无效。
我得到的错误是:
An expression of non-boolean type specified in a context where a
condition is expected, near 'GROUP'.
代码:
Session["string"] = "answer ='Male'";
Session["count"] = 1;
myCommandSearch = new SqlCommand("SELECT userId FROM UserAnswer WHERE @SEARCHVARIABLES GROUP by userId HAVING COUNT(*) = @VARIABLECOUNT", myConnection);
myCommandSearch.Parameters.AddWithValue("@SEARCHVARIABLES", Session["string"]);
myCommandSearch.Parameters.AddWithValue("@VARIABLECOUNT", Session["count"]);
SqlDataReader myReaderSearch = myCommandSearch.ExecuteReader();
在此先感谢您的帮助。
这是您的查询:
SELECT userId
FROM UserAnswer
WHERE @SEARCHVARIABLES
GROUP by userId
HAVING COUNT(*) = @VARIABLECOUNT;
参数可用于替换文字值。它们不能用于替换:
- 列名称
- Table 名字
- 数据库
- 表达式
- 函数名称
- 以及任何其他不是常量的东西
所以,@SEARCHVARIABLES
似乎是一个字符串。假设它是这样的:userId IN (1, 2, 3)
。那么查询将是:
SELECT userId
FROM UserAnswer
WHERE 'userId IN (1, 2, 3)'
GROUP by userId
HAVING COUNT(*) = @VARIABLECOUNT;
该上下文中不允许使用字符串。因此,您遇到了错误。
大家好,我一直收到此错误,但我无法解决。它在我 运行 数据库工具中的查询时有效,但在我的 Microsoft web 开发中无效。
我得到的错误是:
An expression of non-boolean type specified in a context where a condition is expected, near 'GROUP'.
代码:
Session["string"] = "answer ='Male'";
Session["count"] = 1;
myCommandSearch = new SqlCommand("SELECT userId FROM UserAnswer WHERE @SEARCHVARIABLES GROUP by userId HAVING COUNT(*) = @VARIABLECOUNT", myConnection);
myCommandSearch.Parameters.AddWithValue("@SEARCHVARIABLES", Session["string"]);
myCommandSearch.Parameters.AddWithValue("@VARIABLECOUNT", Session["count"]);
SqlDataReader myReaderSearch = myCommandSearch.ExecuteReader();
在此先感谢您的帮助。
这是您的查询:
SELECT userId
FROM UserAnswer
WHERE @SEARCHVARIABLES
GROUP by userId
HAVING COUNT(*) = @VARIABLECOUNT;
参数可用于替换文字值。它们不能用于替换:
- 列名称
- Table 名字
- 数据库
- 表达式
- 函数名称
- 以及任何其他不是常量的东西
所以,@SEARCHVARIABLES
似乎是一个字符串。假设它是这样的:userId IN (1, 2, 3)
。那么查询将是:
SELECT userId
FROM UserAnswer
WHERE 'userId IN (1, 2, 3)'
GROUP by userId
HAVING COUNT(*) = @VARIABLECOUNT;
该上下文中不允许使用字符串。因此,您遇到了错误。