在User-Defined Variables下,MySQL手册文档:
可以从一组有限的数据类型为用户变量分配值:整数,十进制,浮点,二进制或非二进制字符串或
NULL值.十进制值和实数值的分配不保留值的精度或比例.除了允许类型之外的类型的值被转换为允许类型.例如,具有时间或空间数据类型的值被转换为二进制字符串.如果为用户变量分配了非二进制(字符)字符串值,则它具有与字符串相同的字符集和排序规则.用户变量的强制性是隐含的.(这与表列值的强制性相同.)
但是手册没有说明:
支持的整数的大小(例如4字节INT或8字节BIGINT),无论是有符号还是无符号,是否ZEROFILL应用(如果是,使用什么显示宽度);
这个sqlfiddle 似乎暗示MySQL 5.5.25将使用最多BIGINT,根据作业签名,并且不会应用任何ZEROFILL.
固定值和浮点值中使用的精度和比例,因为这不是从赋值中保留的; 和
字符串的最大长度(以字符和/或字节为单位).
sqlfiddle被限制max_allowed_packet的2个20字节(我不能改变):我想的是LONGTEXT2个32字节(4GiB)被支撑.
可以安全地依赖什么限制,特别是在不同的服务器版本和配置中?
用户变量使用MySQL用于列值计算的相同内部数据类型.这些内部类型足以支持MySQL支持的所有数据类型.
ZEROFILL,因为这是列的附加属性,而不是数据类型本身.此外,整数用户变量没有宽度; 转换为文本时,它们会根据需要使用尽可能多的数字.LONGTEXT值,如果max_allowed_packet足够大并且你有足够的内存.但是,对于用户变量,存在16 MB的无证限制,如错误31898中所述.| 归档时间: |
|
| 查看次数: |
2945 次 |
| 最近记录: |