ISSUE:Mysql将Enum转换为Int

NSj*_*nas 8 mysql int enums

我的数据库中有一个非常简单的评级系统,每个评级都存储为枚举('1',' - 1').要计算我尝试使用此语句的总数:

SELECT SUM(CONVERT(rating, SIGNED)) as value from table WHERE _id = 1
Run Code Online (Sandbox Code Playgroud)

这适用于正1但由于某种原因-1被解析为2.

任何人都可以帮助或提供煽动吗?

或者我应该放弃并将列更改为SIGNED INT(1)?

Chr*_*ris 16

这就是你想要的

select enum+0 as enum
Run Code Online (Sandbox Code Playgroud)


小智 13

只能int在MySQL中进行此转换enum:

CAST(CAST(`rating` AS CHAR) AS SIGNED) as value from table WHERE _id = 1
Run Code Online (Sandbox Code Playgroud)


ain*_*ain 5

是的,我建议更改列的类型。当您阅读有关枚举类型文档(强烈建议不要使用数字作为枚举值!)时,问题就变得很清楚了——返回的是枚举项的索引,而不是枚举值本身。