Приведение MySQL к -1 возвращает 18446744073709551615
Кажется, я не могу найти объяснение этому, и я почти уверен, что раньше это работало так, как ожидалось.
SELECT CAST(-1 AS UNSIGNED INTEGER);
Ожидается: 0
Результат: 18446744073709551615
Что-то изменилось, или это ошибка MySQL?
[ОБНОВЛЕНИЕ] Хорошо, я думаю, что нашел причину, почему это, казалось, работало прежде:
SELECT CAST(-1.0 AS UNSIGNED INTEGER);
+--------------------------------+
| CAST(-1.0 AS UNSIGNED INTEGER) |
+--------------------------------+
| 0 |
+--------------------------------+
Теперь, может кто-нибудь, пожалуйста, объясните разницу, которую это вызывает? .. На самом деле, я нашел в документах!
Если любой из операндов является значением с плавающей запятой, результат является значением с плавающей запятой и не затрагивается предыдущим правилом.