gpt4 book ai didi

sql - ORDER 方向 (ASC/DESC) 不能用作 SQL 查询中的参数

转载 作者:行者123 更新时间:2023-12-04 12:46:25 25 4
gpt4 key购买 nike

我正在编写一些参数化查询,我注意到在 SQL Server 2008 中不允许对 ORDER 的“ASC/DESC”部分使用参数。这会产生错误 Incorrect syntax near '@p'. :

declare @p nvarchar
set @p = 'desc'

select * from Customer order by CustomerID @p

但是,如果您在其周围使用括号,则使用参数作为结果数量可以正常工作。
declare @p int
set @p = 5

select top (@p) * from Customer order by CustomerID

是否有任何原因,以及任何解决方法?

这个问题提出了一种解决方法,但没有说明为什么需要它:
DESC and ASC as a parameter in stored procedure

最佳答案

尝试这样的事情

DECLARE @tbl TABLE(ID INT IDENTITY,SomeValue VARCHAR(100));

INSERT INTO @tbl(SomeValue) VALUES('a'),('b'),('c');

DECLARE @sortDirection VARCHAR(10)='ASC';

SELECT *
FROM @tbl
ORDER BY CASE WHEN @sortDirection='DESC' THEN ID END DESC
,CASE WHEN @sortDirection='ASC' THEN ID END ASC

编辑

我拿走了 ELSE 0 .不需要,如果排序列不是 INT会造成麻烦

关于sql - ORDER 方向 (ASC/DESC) 不能用作 SQL 查询中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38737399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com