sql-server - 在给定 SQL Server 中的存储过程参数的情况下,是否可以按任何列进行排序?

标签 sql-server database sql-server-2005

我正在研究根据给定一些输入指定的列对表进行排序,根据我的发现,没有简单的方法可以做到这一点。我发现的最好的是 switch 语句:

SELECT Column1, Column2, Column3, Column4
FROM Table
ORDER BY CASE WHEN @OrderBY = 'Column1' THEN Column1
              WHEN @OrderBY = 'Column2' THEN Column2
              WHEN @OrderBY = 'Column3' THEN Column3
              WHEN @OrderBY = 'Column4' THEN Column4

是否可以在没有这样的 CASE 语句的情况下执行此操作?如果表格变得更大并且需要根据更多列进行排序,这可能会变得困惑。

我能够做到这一点的唯一方法是连接一个大的 SQL 字符串,这在某种程度上破坏了存储过程的优势,并使 SQL 难以编写和维护。

最佳答案

你有两个选择:

  1. 如上所示

  2. 或者生成动态sql并执行 使用 sp_executesql

关于sql-server - 在给定 SQL Server 中的存储过程参数的情况下,是否可以按任何列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169624/

相关文章:

sql-server - 临时存储上的 Azure VM SQL Server Tempdb

c# - 从 C#/ASP.NET 应用程序将数据插入 SQL Server

c# - 与 SQL Server 的初始连接速度很慢。为什么?

sql-server - 为什么多个 WHERE 条件会减慢查询而不是加快查询速度?

sql-server - 从 SQL Server 导出到带有列标题的 Excel?

.net - SQL Server 与 .NET 加密

mysql - SQL Server 2008 排序规则

mysql - 如何获取与值匹配或存在于另一个表中的记录?

database - Django:在嵌套数据结构中序列化模型?

mysql - 将字段值和 ID 链接到另一个表?