【问题标题】:dynamic order by conversion error转换错误的动态排序
【发布时间】:2012-11-04 00:17:06
【问题描述】:

我正在尝试通过 pubs 数据库进行动态排序并收到以下错误 当我尝试使用@sort_order = 2

消息 245,第 16 级,状态 1,第 6 行 将 nvarchar 值 'Pavlova' 转换为数据类型 int 时转换失败。

This is the article

SELECT * FROM Paging
WHERE seq > (@page_nbr - 1) * @page_size
  AND seq <= @page_nbr * @page_size
ORDER BY CASE
    WHEN @sort_order = 1 THEN ProductID
    WHEN @sort_order = 2 THEN ProductName
    ELSE CategoryID
END

【问题讨论】:

  • 传递给查询的参数@sort_order的值是多少?

标签: sql-server sql-server-2008 tsql


【解决方案1】:

ProductIDProductNameCategoryID 属于不同类型。 CASE 的所有案例都需要评估为相同的类型。

查看此线程以获取其他替代方案:https://stackoverflow.com/a/751659/1373170

接受的答案(多个案例陈述)和ROW_NUMBER() 方法似乎都有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多