---
title: "sql_mode - OceanBase 数据库 V4.2.5 | OceanBase 文档中心"
description: sql_mode 说明 该变量从 V1.4 版本开始引入。 功能描述 sql_mode 用于设置 SQL 模式，不同的 SQL 模式对于数据库行为有很大影响。 说明 该变量仅适用于 OceanBase 数据库 MySQL 模式。 权限要求 查询变量 Global 级别 sys 租户和所有用户租户均可以使用 SHOW …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.5 LTS

# sql_mode

更新时间：2026-04-15 17:17:00

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.5/zh-CN/700.reference/800.configuration-items-and-system-variables/200.system-variable/300.global-system-variable/11700.sql_mode-global.md)

#### 说明

该变量从 V1.4 版本开始引入。

## 功能描述

`sql_mode` 用于设置 SQL 模式，不同的 SQL 模式对于数据库行为有很大影响。

#### 说明

该变量仅适用于 OceanBase 数据库 MySQL 模式。

## 权限要求

- 查询变量

     - Global 级别

      `sys` 租户和所有用户租户均可以使用 `SHOW VARIABLES` 语句或视图 `information_schema.GLOBAL_VARIABLES`（MySQL 模式）查看 Global 系统变量的值。
     - Session 级别

      `sys` 租户和所有用户租户均可以使用 `SHOW VARIABLES` 语句或视图 `information_schema.SESSION_VARIABLES`（MySQL 模式）查看 Session 系统变量的值。
 - 修改变量

     - Global 生效

           - `sys` 租户可以直接修改 Global 系统变量的值。
           - MySQL 用户租户需要拥有 `SUPER` 或 `ALTER SYSTEM` 权限才能修改 Global 系统变量的值。
     - Session 生效

      `sys` 租户和所有用户租户均可以直接修改本租户的 Session 系统变量的值。

## 属性说明

| **属性** | **描述** |
| --- | --- |
| 参数类型 | Uint |
| 默认值 | STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER   #### 说明    - 对于 V4.3.x 版本，从 V4.3.0 版本开始默认值由 `STRICT_ALL_TABLES,NO_ZERO_IN_DATE` 调整为 `STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER`。 - 对于 V4.2.x 版本，从 V4.2.1 BP1 版本开始默认值由 `STRICT_ALL_TABLES,NO_ZERO_IN_DATE` 调整为 `STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER`。 |
| 取值范围 | 取值可以为以下几个值的任意组合：   - `ANSI_QUOTES`：将字符串引号字符（双引号 ”）当成标识符引号字符（反引号 ` ）来使用，故不能使用双引号来引用字符串。 - `ERROR_FOR_DIVISION_BY_ZERO`：执行 `INSERT` 或 `UPDATE` 语句时，数据被零除，会产生错误。    - 未启用 `ERROR_FOR_DIVISION_BY_ZERO` 模式时，数据被零除，返回 NULL。   - 启用 `ERROR_FOR_DIVISION_BY_ZERO` 模式，但未启用严格 SQL 模式（ `STRICT_ALL_TABLES` 或 `STRICT_TRANS_TABLES` ）时，数据被零除，返回 NULL。   - 同时启用严格 SQL 模式（ `STRICT_ALL_TABLES` 或 `STRICT_TRANS_TABLES` ）和 `ERROR_FOR_DIVISION_BY_ZERO` 模式时，不允许数据被零除，并产生报错。   - 同时启用严格 SQL 模式（ `STRICT_ALL_TABLES` 或 `STRICT_TRANS_TABLES`）和 `ERROR_FOR_DIVISION_BY_ZERO` 模式，且指定了 `ignore` 时，数据被零除，返回 NULL。- `HIGH_NOT_PRECEDENCE`：NOT 运算符的优先级使得 `NOT a BETWEEN b AND c `等表达式被解析为 `NOT（a BETWENE b AND c）`。 - `IGNORE_SPACE`：在函数名称和字符之间允许有空格，该字段目前只用于兼容，可以设置但不生效。 - `NO_AUTO_CREATE_USER`：不允许使用 GRANT 语句创建密码为空的用户。 - `NO_DIR_IN_CREATE`：指创建表时忽略所有 `INDEX DIRECTORY` 和 `DATA DIRECTORY` 指令，该字段目前只用于兼容，可以设置但不生效，且在 OceanBase 数据库中的行为与 MySQL 不一致。 - `NO_ENGINE_SUBSTITUTION`：使用的存储引擎被禁用或未编译时，会报错。未设置该取值时，会采用默认的存储引擎代替，并显示异常。该字段目前只用于兼容，可以设置但不生效，且在 OceanBase 数据库中的行为与 MySQL 不一致。 - `NO_FIELD_OPTIONS`：不能在 `SHOW CREATE TABLE` 的输出中打印 MySQL 模式特定的列选项。 - `NO_KEY_OPTIONS`：不能在 `SHOW CREATE TABLE` 的输出中打印 MySQL 模式特定的索引选项。 - `NO_TABLE_OPTIONS`：不能在 `SHOW CREATE TABLE` 的输出中打印 MySQL 模式特定的表选项（例如 ENGINE）。 - `NO_UNSIGNED_SUBTRACTION`：默认情况下，整数值之间的减法（其中一个为 UNSIGNED 类型）会产生无符号结果。 - `NO_ZERO_DATE`：是否允许 '0000-00-00' 形式的日期。    - 未启用 `NO_ZERO_DATE` 模式时，允许 '0000-00-00' 形式的日期。   - 启用 `NO_ZERO_DATE` 模式，但未启用严格 SQL 模式（ `STRICT_ALL_TABLES` 或 `STRICT_TRANS_TABLES` ）时，允许 '0000-00-00' 形式的日期。   - 同时启用严格 SQL 模式（ `STRICT_ALL_TABLES` 或 `STRICT_TRANS_TABLES` ）和 `NO_ZERO_DATE` 模式时，不允许 '0000-00-00' 形式的日期，并产生报错。   - 同时启用严格 SQL 模式（ `STRICT_ALL_TABLES` 或 `STRICT_TRANS_TABLES` ）和 NO_ZERO_DATE 模式，且指定了 `ignore` 时，允许 '0000-00-00' 形式的日期。- `NO_ZERO_IN_DATE`：允许年份非 0，月或日为 0 形式的日志（如：'2010-00-01' 或 '2010-01-00' ）。      - 未启用 `NO_ZERO_IN_DATE` 模式时，允许年份非 0，月或日为 0 形式的日期。     - 启用 `NO_ZERO_IN_DATE` 模式，但未启用严格 SQL 模式（ `STRICT_ALL_TABLES` 或 `STRICT_TRANS_TABLES` ）时，年份非 0，月或日为 0 形式的日期会转为 '0000-00-00' 形式的日期。     - 同时启用严格 SQL 模式（ `STRICT_ALL_TABLES` 或 `STRICT_TRANS_TABLES` ）和 `NO_ZERO_IN_DATE` 模式时，不允许年份非 0，月或日为 0 形式的日期，并产生报错。     - 同时启用严格 SQL 模式（ `STRICT_ALL_TABLES` 或 `STRICT_TRANS_TABLES` ）和 `NO_ZERO_IN_DATE` 模式，且指定了 `ignore` 时，年份非 0，月或日为 0 形式的日期会转为 '0000-00-00' 形式的日期。 - `ONLY_FULL_GROUP_BY`：只允许 `SELECT` 列表、`HAVING` 条件或 `ORDER BY` 列包含由 `GROUP BY` 列唯一确定的列。 - `PIPES_AS_CONCAT`：将（\|\|）视为字符串连接运算符（与 CONCAT() 相同），而不是 OR 的同义词。 - `PAD_CHAR_TO_FULL_LENGTH`：在 CHAR 检索时保留列的末尾空格。并且检索到的 CHAR 值将填充到它们的全长。 - `REAL_AS_FLOAT`：默认情况下将 `REAL` 视为 `DOUBLE` 的同义词。设置后将 `REAL` 视为 `FLOAT` 的同义词。 - `STRICT_ALL_TABLES`：为所有存储引擎启用严格 SQL 模式，拒绝无效的数据值。 - `STRICT_TRANS_TABLES`：为事务存储引擎启用严格 SQL 模式，并且在可能的情况下为非事务存储引擎启用严格 SQL 模式。 - `TIME_TRUNCATE_FRACTIONAL`：控制在将具有小数秒部分的 TIME、DATE 或 TIMESTAMP 值插入到具有相同类型但小数位数较少的列中时，是否发生四舍五入。默认为舍入，如果启用此模式，则会舍弃。 - `ANSI`：相当于 REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE 和 ONLY_FULL_GROUP_BY 之间的组合。 - `DB2`：相当于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS 之间的组合。 - `MAXDB`：相当于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER 之间的组合。 - `MSSQL`：相当于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS 之间的组合。 - `MYSQL323`：相当于 HIGH_NOT_PRECEDENCE 中增加了一些 MYSQL323 的特性。 - `MYSQL40`：相当于 HIGH_NOT_PRECEDENCE 中增加了一些 MYSQL40 的特性。 - `ORACLE`：相当于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER 之间的组合。 - `POSTGRESQL`：相当于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS 之间的组合。 |
| 生效范围 | - Global - Session |
| 是否可修改 | 是，支持通过 `SET` 语句修改。 |

## 配置示例

将 SQL 模式设置为 `STRICT_ALL_TABLES`、`NO_ZERO_IN_DATE` 和 `NO_AUTO_CREATE_USER`。

- Session 生效

  ```shell
  obclient> SET sql_mode = 'STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER';

  ```
 - Global 生效

  ```shell
  obclient> SET GLOBAL sql_mode = 'STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER';

  ```

## 相关文档

[INFORMATION_SCHEMA.TRIGGERS](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001503006)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
