【发布时间】:2017-08-25 17:10:57
【问题描述】:
我不是 SQL 大师,所以我希望这不是什么大问题。 :) 这是我的 SQL:
query = "SELECT id, email, firstName, lastName " +
"FROM [WarehouseUser] " +
"WHERE email LIKE '%' + @Filter + '%' OR FirstName LIKE '%' + @Filter + '%' OR LastName LIKE '%' + @Filter + '%'" +
"ORDER BY " + "DESC" +
"OFFSET @Offset ROWS " +
"FETCH NEXT @Length ROWS ONLY;";
执行此操作时,我收到以下错误:
System.Data.SqlClient.SqlException: '@Offset' 附近的语法不正确。 FETCH 语句中选项 NEXT 的使用无效。'
我做错了什么?
【问题讨论】:
-
(1) 您使用的是什么数据库?请适当标记。 (2) 变量替换后的查询是什么样的?
-
sort包含什么?在某处打印最终的 sql 渲染字符串,尝试直接运行它,看看问题出在哪里......我认为必须在sort或偏移量、长度的数字上(并且在订单之前你没有任何空间。 -
它可能是
+和"在sort之后搞砸了 -
如果
sort为空,这正是出现的语法错误。由此我初步推断sort是空的。 -
那是因为
ORDER BY DESC也无效。您的ORDER BY(ORDER BY WidgetCount DESC) 缺少一列。构建动态 SQL 时,在执行前打印出来,然后使用 SSMS 或 Visual Studio 的服务器特性来查看语句在语法上是否合法。运气好的话,你会立即得到波浪线告诉你它不是。 (此外,当您动态组合语句时,强烈建议您具备 SQL 的基本工作知识——您至少应该知道ORDER BY的工作原理。)
标签: c# sql sqlexception