cast() 和 convert() 函数非常常用,它们可以转换数据的数据类型、字符集以及排序校对规则。
数据类型转换
cast() 和 convert() 函数可以将 value 值,从当前数据类型转换为另一种数据类型。
基本语法:
CAST(expr AS type)
CONVERT(expr, type)
mysql> select now(), cast(now() as date), convert(now(), date);
+---------------------+---------------------+----------------------+
| now() | cast(now() as date) | convert(now(), date) |
+---------------------+---------------------+----------------------+
| 2023-02-16 14:52:54 | 2023-02-16 | 2023-02-16 |
+---------------------+---------------------+----------------------+
1 row in set (0.00 sec)
当无符号的整数,减去另一个大于它的整数时,会报错。
mysql> select cast(2 as unsigned) - 5;
ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(cast(2 as unsigned) - 5)'
这是因为如果其中有一个,确定了是无符号的话,若相减的结果小于 0,就会报错。
解决方法:最好将两个数都确切转换成有符号(s