在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