В Пользовательские переменные, документы руководства MySQL:
Пользовательским переменным может быть присвоено значение из ограниченного набора типов данных: целочисленная, десятичная, с плавающей точкой, двоичная или недвоичная строка или значение
NULL
. Присвоение десятичных и реальных значений не сохраняет точность или масштаб значения. Значение типа, отличного от одного из допустимых типов, преобразуется в допустимый тип. Например, значение, имеющее временный или пространственный тип данных, преобразуется в двоичную строку.Если переменной пользователя присваивается недвоичное (символьное) строковое значение, она имеет тот же набор символов и сортировку в качестве строки. Согласованность пользовательских переменных неявна. (Это та же самая совместимость, что и для значений столбца таблицы.)
Однако в руководстве не указано:
-
размер поддерживаемых целых чисел (например, 4-байтовый
INT
или 8-байтовыйBIGINT
), независимо от того, подписаны они или нет, и применяется лиZEROFILL
(если это так, используя ту ширину экрана);Этот sqlfiddle, по-видимому, предполагает, что MySQL 5.5.25 будет использовать до
BIGINT
, подписанный в соответствии с назначением, и не будет применять никакихZEROFILL
. -
точность и масштаб, используемые в значениях с фиксированной и плавающей точкой, при условии, что это не сохраняется из назначения; и
-
максимальная длина (в символах и/или байтах) строк.
sqlfiddle ограничен
max_allowed_packet
из 2 20 байтов (которые я не могу изменить): я бы предположил, чтоLONGTEXT
из 2 32 байтов ( 4GiB).
На каких ограничениях можно безопасно полагаться, особенно в разных версиях сервера и конфигурациях?