MySQL SQL mode简介

一、通过设置 SQL Mode,可以完成不同严格程度的数据校验,有效地保障数据准确性。
  通过设置 SQL Mode 为 ANSI 模式,来保证大多数 SQL 符合标准的 SQL 语法,这样应用在
不同数据库之间进行迁移时,则不需要对业务 SQL 进行较大的修改。
  在不同数据库之间进行数据迁移之前,通过设置 SQL Mode 可以使 MySQL 上的数据更方
便地迁移到目标数据库中。

二、在 MySQL 5.0 上,查询默认的 SQL Mode(sql_mode 参数)为:REAL_AS_FLOAT、
PIPES_AS_CONCAT、ANSI_QUOTES、GNORE_SPACE 和 ANSI。在这种模式下允许插入超过字段
长度的值,只是在插入后,MySQL 会返回一个 warning。通过修改 sql_mode 为
STRICT_TRANS_TABLES(严格模式)实现了数据的严格校验,使错误数据不能插入表中,从
而保证了数据的准确性,

sql:set session sql_model = " 参数";

三、SQL Mode常见功能

1、校验日期数据地合法性

2、在INSERT或UPDATE过程中,如果SQL MODE处于TRADITIONAL模式,运行MOD(X,
0)会产生错误,因为 TRADITIONAL 也属于严格模式,在非严格模式下 MOD(X,0)返回的结
果是 NULL,所以在含有 MOD 的运算中要根据实际情况设定好 sql_mode。

3、启用 NO_BACKSLASH_ESCAPES 模式,使反斜线成为普通字符。在导入数据时,如
数据中含有反斜线字符,启用 NO_BACKSLASH_ESCAPES 模式保证数据的正确性,是个不错
的选择。

4、启用 PIPES_AS_CONCAT 模式。将“||”视为字符串连接操作符,在 Oracle 等数据
库中,“||”被视为字符串的连接操作符,所以,在其他数据库中含有“||”操作符的 SQL
在 MySQL 中将无法执行,为了解决这个问题,MySQL 提供了 PIPES_AS_CONCAT 模式。

四 、数据库迁移时候需要使用到组合的数据库mode。