
Если значение имеет слишком много цифр в дробной части, происходит округление, и будет сгенерировано предупреждение. Округление выполнено как описано в разделе "
Если значение имеет слишком много цифр в целочисленной части, оно слишком большое и обработано следующим образом:
Если строгий режим не допускается, значение усечено к самому близкому допустимому значению, и сгенерировано предупреждение.
Если строгий режим допускается, происходит ошибка переполнения.
По умолчанию, деление на нуль производит результат NULL и никакого предупреждения. С включенным режимом SQL ERROR_FOR_DIVISION_BY_ZERO MySQL обрабатывает деление на нуль по-другому:
Если строгий режим не допускается, происходит предупреждение.
Если строгий режим допускается, вставки и модификации, включающие деление на нуль, запрещены, и происходит ошибка.
Другими словами, вставки и модификации, включающие выражения, которые выполняют деление на нуль, могут обрабатываться как ошибки, но это требует ERROR_FOR_DIVISION_BY_ZERO в дополнение к строгому режиму.
Предположим, что мы имеем эту инструкцию:
INSERT INTO t SET i = 1/0;
Это что случается для комбинации строгого режима и ERROR_FOR_DIVISION_BY_ZERO:
Значение sql_mode | Результат
'' (значение по умолчанию) | Никаких предупреждений и ошибок: i установлен в NULL.
strict | Никаких предупреждений и ошибок: i установлен в NULL.
ERROR_FOR_DIVISION_BY_ZERO | Никаких ошибок, но есть предупреждение: i установлен в NULL.
strict,ERROR_FOR_DIVISION_BY_ZERO | Ошибка: никакая строка не вставлена.
Для вставок строк в числовые столбцы, преобразование из строки в число обработано следующим образом, если строка имеет нечисловое содержание:
