在MySQL中按“ ENUM字段”排序

有一个字段’noticeBy’枚举(’email’,’mobile’,’all’,’auto’,’nothing’)NOT

NULL默认’auto’。众所周知,按ENUM字段排序相对于其索引执行。但是,如何通过其值进行排序?

回答:

如“ 排序”中所述:

ENUM值根据其索引号排序,索引号取决于列规范中列出的枚举成员的顺序。例如,'b''a'for 之前排序ENUM('b',

'a')。空字符串排在非空字符串之前,NULL值排在所有其他枚举值之前。

为防止在使用列ORDER BY上的子句时出现意外结果ENUM,请使用以下技术之一:

  • ENUM按字母顺序指定列表。

  • 确保通过编码ORDER BY CAST(col AS CHAR)或将该列按词法而不是按索引号排序ORDER BY

    CONCAT(col)

因此,对于第二个项目符号,可以在将其强制转换为字符串后在该列上进行排序:

ORDER BY CAST(noticeBy AS CHAR)

以上是 在MySQL中按“ ENUM字段”排序 的全部内容, 来源链接: utcz.com/qa/432271.html

回到顶部