我有一个包含此表的数据库(评级)..
+---------+-------------+----------+------+------------+
| rate_id | reviewer_id | movie_id | rate | date1 |
+---------+-------------+----------+------+------------+
| 1 | 201 | 101 | 2 | 2011-01-22 |
| 2 | 201 | 101 | 4 | 2011-01-27 |
| 3 | 202 | 106 | 4 | NULL |
| 4 | 203 | 103 | 2 | 2011-01-20 |
| 5 | 203 | 108 | 4 | 2011-01-12 |
| 6 | 203 | 108 | 2 | 2011-01-30 |
| 7 | 204 | 101 | 3 | 2011-01-09 |
| 8 | 205 | 103 | 3 | 2011-01-27 |
| 9 | 205 | 104 | 2 | 2011-01-22 |
| 10 | 205 | 108 | 4 | NULL |
| 11 | 206 | 107 | 3 | 2011-01-15 |
| 12 | 206 | 106 | 5 | 2011-01-19 |
| 13 | 207 | 107 | 5 | 2011-01-20 |
| 14 | 208 | 104 | 3 | 2011-01-02 |
+---------+-------------+----------+------+------------+
费率是具有这些值的集合 (' 1'&#39 2'&#39 3'' 4'&#39 5&#39)。我想将此设置值转换为整数。我使用了cast(速率为无符号)。然后我使用了这个查询.. SELECT rate,cast(rate AS UNSIGNED)FROM rating;
它给了我这张表
的MySQL>选择率,演员表(率为无符号)FROM评级;
+------+------------------------+
| rate | cast(rate as unsigned) |
+------+------------------------+
| 2 | 2 |
| 4 | 8 |
| 4 | 8 |
| 2 | 2 |
| 4 | 8 |
| 2 | 2 |
| 3 | 4 |
| 3 | 4 |
| 2 | 2 |
| 4 | 8 |
| 3 | 4 |
| 5 | 16 |
| 5 | 16 |
| 3 | 4 |
+------+------------------------+
它看起来像二进制值..plz帮助我将其转换为正确的整数值..
答案 0 :(得分:0)
您应该尝试以下方式。
结果的类型可以是以下值之一:
感谢。
答案 1 :(得分:0)
试试这个..
CAST(CAST(费率AS char)AS UNSIGNED);
它有效..
答案 2 :(得分:0)
ENUM不是数值的好选择。您可以使用TYNYINT和过滤值,而不是使用ENUM,只接受代码中的[1-5]
。
MYSQL文件明确提到
我们强烈建议您不要将数字用作枚举值,因为它不会通过适当的TINYINT或SMALLINT类型保存在存储上,并且很容易混淆字符串和基础数字值(可能不是如果你不正确地引用ENUM值。如果确实使用数字作为枚举值,请始终将其括在引号中。如果省略引号,则将该数字视为索引。请参阅枚举文字的处理,以查看引用的数字是否可能被错误地用作数字索引值。
检查出来:MYSQL DOC Enumeration Limitations
:)