---
title: "sql_mode | OceanBase 文档中心"
description: sql_mode sql_mode 用于设置 SQL 模式，不同的 SQL 模式对于数据库行为有很大影响。 属性 描述 参数类型 varchar 默认值 STRICT_ALL_TABLES,NO_ZERO_IN_DATE 取值范围 取值可以为以下几个值的任意组合： ANSI_QUOTES：将字符串引号字符（双引号 ”…
---
切换语言

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

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

# sql_mode

更新时间：2026-06-30 10:30:14

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

| **属性** | **描述** |
| --- | --- |
| 参数类型 | varchar |
| 默认值 | STRICT_ALL_TABLES,NO_ZERO_IN_DATE |
| 取值范围 | 取值可以为以下几个值的任意组合：   - 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。- NO_AUTO_CREATE_USER：不允许使用 GRANT 语句创建密码为空的用户。 - NO_ENGINE_SUBSTITUTION：使用的存储引擎被禁用或未编译时，会报错。未设置该取值时，会采用默认的存储引擎代替，并显示异常。该字段目前只用于兼容。 - 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：查询需要满足的条件：选择列表、HAVING 条件或 ORDER BY 列表引用非聚合列，这些列既不在 GROUP BY 子句中命名，也不在功能上依赖于唯一确定的 GROUP BY 列。 - PAD_CHAR_TO_FULL_LENGTH：在 CHAR 检索时保留列的末尾空格。并且检索到的 CHAR 值将填充到它们的全长。 - STRICT_ALL_TABLES：为所有存储引擎启用严格 SQL 模式，拒绝无效的数据值。 - STRICT_TRANS_TABLES：为事务存储引擎启用严格 SQL 模式，并且在可能的情况下为非事务存储引擎启用严格 SQL 模式。 |
| 生效范围 | - Global - Session |

将当前会话的 SQL 模式设置为 `STRICT_ALL_TABLES,STRICT_TRANS_TABLES` 。示例如下：

```unknow
obclient>SET SESSION sql_mode = 'STRICT_ALL_TABLES,STRICT_TRANS_TABLES';

```

 上一篇 下一篇 ![有帮助](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) 咨询热线
