功能描述
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_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE 和 ONLY_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_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO 以及 NO_ENGINE_SUBSTITUTION,使 TDSQL Boundless 行为更严格,类似于传统数据库系统。HIGH_NOT_PRECEDENCE:使 NOT 运算符具有高优先级,与 AND 和 OR 运算符的优先级相同。NO_ENGINE_SUBSTITUTION:如果指定的存储引擎不可用,则抛出错误,而不是使用默认的存储引擎。PAD_CHAR_TO_FULL_LENGTH:在插入数据时,将 CHAR 类型列的值填充到其定义的长度。TIME_TRUNCATE_FRACTIONAL:启用时间小数部分截断模式。当时间类型(TIME、DATETIME、TIMESTAMP)值的小数部分超出列定义精度时,自动截断多余的小数位而不产生警告或错误。 |
生效范围 | GLOBAL SESSION |
是否重启生效 | 否 |