【问题标题】:ORDER BY enum integer field SQLORDER BY 枚举整数字段 SQL
【发布时间】:2017-09-11 07:21:32
【问题描述】:

我有一个 UserInfo 表,其中有一列名为 [Type] 的数据类型为整数,并且可以包含以下 int 值

     Employee -> 0
     FormerEmployee ->1
     Retiree -> 2
     Disabled -> 3
     COBRAParticipant -> 4

我正在编写一个 sql 查询,其中用户类型的排序顺序现在应该如下:

Employee, COBRAParticipant, Disabled,Retiree, Former Employee. 

使用下面的 order by 子句不会得到预期的结果。

      order by CASE U.[Type]
        WHEN 0 THEN 'Employee'
        WHEN 1 THEN 'COBRAParticipant'
        WHEN 2 THEN 'Disabled'
        WHEN 3 THEN 'Retiree'
        WHEN 4 THEN 'FormerEmployee'
      END;

有人可以建议我查询吗?

谢谢!

【问题讨论】:

  • 单引号用于字符串文字。列名使用双引号。
  • 您会得到什么结果
  • 首先你有FormerEmployee ->1,然后是WHEN 1 THEN 'COBRAParticipant',实际上只有Employee在它的位置
  • 如果你在c#中有枚举,你可以将变量转换为整数,或者使用ToString()来获取枚举的字符串名称。
  • 虽然这是在 C# 应用程序下,但问题本身是纯 sql。考虑删除 c# 标签

标签: sql sql-server


【解决方案1】:

试试看

order by CASE U.[Type]
        WHEN 0 THEN 0
        WHEN 1 THEN 4
        WHEN 2 THEN 3
        WHEN 3 THEN 2
        WHEN 4 THEN 1
      END;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多