Ema*_*een 20 sql sql-server parameters sql-order-by visual-studio
我们希望在使用Visual Studio DataSet Designer创建的查询或存储过程的"Order By"子句中使用参数.
例:
FROM TableName
WHERE (Forename LIKE '%' + @SearchValue + '%') OR
(Surname LIKE '%' + @SearchValue + '%') OR
(@SearchValue = 'ALL')
ORDER BY @OrderByColumn
Run Code Online (Sandbox Code Playgroud)
显示此错误:
Variables are only allowed when ordering by an expression referencing
a column name.
Run Code Online (Sandbox Code Playgroud)
Bra*_*vic 44
你应该可以做这样的事情:
SELECT *
FROM
TableName
WHERE
(Forename LIKE '%' + @SearchValue + '%') OR
(Surname LIKE '%' + @SearchValue + '%') OR
(@SearchValue = 'ALL')
ORDER BY
CASE @OrderByColumn
WHEN 1 THEN Forename
WHEN 2 THEN Surname
END;
Run Code Online (Sandbox Code Playgroud)
@OrderByColumn进行排序Forename.Surname.但要注意性能.这些类型的构造可能会干扰查询优化器找到最佳执行计划的能力.例如,即使Forename被索引覆盖,查询仍可能需要完整排序,而不是仅按顺序遍历索引.
如果是这种情况,并且您不能忍受性能影响,则可能需要为每个可能的排序顺序提供单独的查询版本,从而使客户端的内容变得复杂.
| 归档时间: |
|
| 查看次数: |
39172 次 |
| 最近记录: |