sql_mode

最近更新时间:2026-03-23 14:47:03

我的收藏

功能描述

sql_mode用于设置服务器的 SQL 模式。SQL 模式决定了服务器如何处理 SQL 语句的某些特性和行为,例如数据类型检查、空值处理、字符串比较等。

属性说明

属性
说明
参数类型
SET
默认值
{ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION}
取值范围
REAL_AS_FLOAT:将 REAL 数据类型视为 FLOAT 类型,而不是 DOUBLE 类型。
PIPES_AS_CONCAT:将管道符(||)视为字符串连接运算符,而不是逻辑或运算符。
ANSI_QUOTES:使用 ANSI 标准的引号(双引号)来引用标识符,而不是默认的反引号。
IGNORE_SPACE:忽略标识符周围的空格。
ONLY_FULL_GROUP_BY:要求 GROUP BY 子句中的所有非聚合列都必须在 SELECT 子句中出现。
NO_UNSIGNED_SUBTRACTION:禁用无符号整数的减法。
NO_DIR_IN_CREATE:禁止在 CREATE TABLE 语句中使用 DIRECTORY 选项。
ANSI:启用 ANSI 兼容模式。该模式组合了多个 SQL 标准兼容选项,包括 REAL_AS_FLOATPIPES_AS_CONCATANSI_QUOTESIGNORE_SPACEONLY_FULL_GROUP_BY,使 TDSQL Boundless 行为更接近标准 SQL。
NO_AUTO_VALUE_ON_ZERO:在插入数据时,如果整数列的值为零,则不自动生成自增值。
NO_BACKSLASH_ESCAPES:禁用反斜杠(\\)作为转义字符。
STRICT_TRANS_TABLES:在事务表中启用严格模式,要求插入、更新和删除操作遵循更严格的规则。
STRICT_ALL_TABLES:启用所有严格模式选项,包括 STRICT_TRANS_TABLES
NO_ZERO_IN_DATE:禁止在日期中使用零部分,如 '2022-00-01'。
NO_ZERO_DATE:禁止使用零日期('0000-00-00')。
ALLOW_INVALID_DATES:允许插入无效的日期,如 '2022-02-30'。
ERROR_FOR_DIVISION_BY_ZERO:在执行除法操作时,如果除数为零,则抛出错误。
TRADITIONAL:启用传统严格模式。该模式组合了严格数据校验选项,包括 STRICT_TRANS_TABLESSTRICT_ALL_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERO 以及 NO_ENGINE_SUBSTITUTION,使 TDSQL Boundless 行为更严格,类似于传统数据库系统。
HIGH_NOT_PRECEDENCE:使 NOT 运算符具有高优先级,与 ANDOR 运算符的优先级相同。
NO_ENGINE_SUBSTITUTION:如果指定的存储引擎不可用,则抛出错误,而不是使用默认的存储引擎。
PAD_CHAR_TO_FULL_LENGTH:在插入数据时,将 CHAR 类型列的值填充到其定义的长度。
TIME_TRUNCATE_FRACTIONAL:启用时间小数部分截断模式。当时间类型(TIME、DATETIME、TIMESTAMP)值的小数部分超出列定义精度时,自动截断多余的小数位而不产生警告或错误。
生效范围
GLOBAL
SESSION
是否重启生效