SQL Server- ORDER BY CASE

Pat*_*h22 0 sql sql-server

我有以下动态运行的查询

SELECT *
FROM Vehicles
WHERE (DKID IN (69954))
ORDER BY case when ImageName1 = 'na' then 0 else 1 end, Make , Model, Year DESC
Run Code Online (Sandbox Code Playgroud)

这将返回以下错误:

执行数据库查询时出错.[Macromedia] [SQLServer JDBC驱动程序] [SQLServer]'na'附近的语法不正确.

KM.*_*KM. 6

你动态运行这个查询吗?如果是这样你可能需要转义'na'周围的引号:

SELECT *
FROM Vehicles
WHERE (DKID IN (69954))
ORDER BY case when ImageName1 = ''na'' then 0 else 1 end, Make , Model, Year DESC
Run Code Online (Sandbox Code Playgroud)

  • 这表明你没有正确地逃避它,"na"是一个常量还是动态查询的一部分?编辑你的问题,以显示正在生成查询,问题就在那里. (3认同)