【发布时间】:2012-09-06 07:26:02
【问题描述】:
User-Defined Variables下,MySQL手册文档:
可以从一组有限的数据类型中为用户变量分配一个值:整数、十进制、浮点、二进制或非二进制字符串,或
NULL值。小数和实数的赋值不会保留值的精度或小数位数。将除允许类型之一之外的类型的值转换为允许类型。例如,具有时间或空间数据类型的值被转换为二进制字符串。如果为用户变量分配了非二进制(字符)字符串值,则它具有与字符串相同的字符集和排序规则。用户变量的强制性是隐含的。 (这与表列值的强制力相同。)
但是手册没有说明:
-
支持的整数的大小(例如 4 字节
INT或 8 字节BIGINT),它们是有符号还是无符号,以及是否应用了ZEROFILL(如果是,使用什么显示宽度);This sqlfiddle 似乎表明 MySQL 5.5.25 将使用最多
BIGINT,根据分配进行签名,并且不会应用任何ZEROFILL。 在定点和浮点值中使用的精度和小数位数,假设这不会从赋值中保留;和
-
字符串的最大长度(以字符和/或字节为单位)。
sqlfiddle 受限于
max_allowed_packet的 220 个字节(我无法更改):我 猜LONGTEXT的 2支持 32 字节 (4GiB)。
可以安全地依赖哪些限制,尤其是在不同的服务器版本和配置之间?
【问题讨论】: