用于忽略mysql系统函数名与之后的括号之间的空格、

还是给个形像的说明吧如:count   (*) 通过设置ignore_space 这个sql_mode 就可以把空格给忽略变成count(*)

1、先从一个普通的例子开始讲起

create table t(id int not null primary key auto_increment, x int);
Query OK, 0 rows affected (0.02 sec) mysql> insert into t(x) values(1),(2),(3),(4),(5),(6);
Query OK, 6 rows affected (0.01 sec)
Records: 6 Duplicates: 0 Warnings: 0 mysql> select count(*) from t; -- 查看t表中有多少行数据
+----------+
| count(*) |
+----------+
| 6 |
+----------+
1 row in set (0.00 sec)

  上面这个例子还是比较“中规中矩”、但是生活中又总是有一些人“放荡不羁有自由”;比如他们要建一张表、表名就叫count!

2、建立一张名叫count的表(1)

create table count(x int);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'count(x int)' at line 1

  看到这个语法错误你可能会想到count是关键字、是不是要明确的标记出来呢? 于是

3、建立一张名叫count的表(2)

create table `count`(x int);
Query OK, 0 rows affected (0.02 sec)

  惊不惊喜? 我想答案一定的否定的、因为我们今天主讲的是ignore_space这个sql_mode 然而它到这里了还没有登场! 就已经有了一种快完了的感觉。

4、建立一张名叫count的表(3)

create table count (x int);
Query OK, 0 rows affected (0.02 sec)

 

5、而2,3,4我们知道表有两种建法、一是加反引号的 二是加空格的;但是对于函数count的调用也可以有两种写法吗?

select count (*) from t;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) from t' at line 1

  由这里可以看到函数与括号之间默认是不能有空格的、如果有的话会报错;有没有一种方式可以让mysql兼容函数的两种写法呢?

  有它就是我们今天的主角igonre_space 这个SQL_MODE

6、通过sql_mode来兼容两种count函数的写法

select @@sql_mode;
+---------------------------------------------------------+
| @@sql_mode |
+---------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION |
+---------------------------------------------------------+
1 row in set (0.00 sec) mysql> set @@session.sql_mode=concat(@@sql_mode,',IGNORE_SPACE');
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> select @@sql_mode;
+----------------------------------------------------------------------+
| @@sql_mode |
+----------------------------------------------------------------------+
| IGNORE_SPACE,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------+
1 row in set (0.00 sec) mysql> select count (*) from t;
+-----------+
| count (*) |
+-----------+
| 6 |
+-----------+
1 row in set (0.00 sec) mysql> select count(*) from t;
+----------+
| count(*) |
+----------+
| 6 |
+----------+
1 row in set (0.00 sec)

sql_mode加上ignore_space 有什么不足的地方?

  1、由于它直接忽略了空格、所以就造成了有的语法就不起作用了、如:create table count (x int);

  2、出现这种需求时多半是不好的编程习惯引起的、如刚才的例子当中、居然给表起了一个叫“count”的名字。

----

sql_mode 之 ignore_space的更多相关文章

  1. mysql的sql_mode合理设置

    mysql的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模式,所以 ...

  2. mysql SQL_MODE设置

    1.1.   SQL_MODE设置 在生产环境中强烈建议将这个值设置为严格模式,这样有些问题可以在数据库的设计和开发阶段就能实现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨 ...

  3. MySQL::SQL_MODE

    SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空.SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插入NOT NULL的 ...

  4. sql_mode :(STRICT_TRANS_TABLES与STRICT_ALL_TABLES 区别)

    http://blog.csdn.net/wulantian/article/details/8905573 http://dev.mysql.com/doc/refman/5.7/en/sql-mo ...

  5. MySQL数据类型:SQL_MODE设置不容忽视

    [IT168 技术]SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空.SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插 ...

  6. 为什么在有的服务器上禅道、蝉知安装会报错? 之理解MySQL的SQL_MODE

    最近用蝉知的CMS 建站比较多,感觉蛮顺手的,但在给客户安装的时候却会出现安装报错,其原因也很简单 查看了一下他们的install.sql文件中,有些时间字段的默认值是0000-00-00 00:00 ...

  7. Mysql的sql_mode

    (一) 基本介绍 set sql_mode="",即强制不设定MySql模式(如不作输入检测.错误提示.语法模式检查等)应该能提高性能,但有如下问题: 如果插入了不合适数据(错误类 ...

  8. [Mysql]由Data truncated for column联想到的sql_mode配置

    系统日志中出现了 ata truncated for column 'agent' at row 1 mysql出现这个问题的原因,无非就是字符集设置 或者是 字段过长导致的. mysql在初始化的时 ...

  9. 设置 sql_mode

    MySQL 的 sql_mode 合理设置 sql_mode 是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模 ...

随机推荐

  1. cs231n笔记(二) 最优化方法

    回顾上一节中,介绍了图像分类任务中的两个要点: 假设函数.该函数将原始图像像素映射为分类评分值. 损失函数.该函数根据分类评分和训练集图像数据实际分类的一致性,衡量某个具体参数集的质量好坏. 现在介绍 ...

  2. 把一张图片变成base64

    // image_file可为urlprivate function base64EncodeImage($image_file) { $image_info = getimagesize($imag ...

  3. 查看oracle数据库是否为归档模式

    查看oracle数据库是否为归档模式   [1]   1.select name,log_mode from v$database;   NAME LOG_MODE   --------------- ...

  4. 【Java线程安全】锁

    Java都有哪些锁? synchronized 和 reentranlock是最常见的,其中前者又JVM提供实现,后者有专门对应的java.util.concurrent包提供:同时后者功能更加丰富. ...

  5. java学习之路--String类的基本方法

    String类常见的功能 获取 1.1 字符串中包含的字符数,也就是获取字符串的长度:int length(); 1.2 根据位置获取某个位置上的字符:char charAt(int index) 1 ...

  6. Ubuntu 安装 JDK8

    安装python-software-properties $sudo apt-get install python-software-properties $sudo apt-get install ...

  7. 2018今日头条杯 E-Jump a Jump

    Problem E. Jump A JumpInput file: standard inputOutput file: standard outputTime limit: 1 secondsMemor ...

  8. 20165330 2017-2018-2 《Java程序设计》第7周学习总结

    课本知识总结 第十一章 JDBC与MySQL数据库 安装XAMPP软件及启动MySQL 下载链接:XAMPP 安装步骤:参考教程xampp新手学习指引(windows示例) 启动MySQL:打开系统c ...

  9. Storm UI说明

    一.Storm ui 首页主要分为4块: Cluster Summary,Topology summary,Supervisor summary,Nimbus Configuration Cluste ...

  10. python框架之Django(5)-O/RM

    字段&参数 字段与db类型的对应关系 字段 DB Type AutoField integer AUTO_INCREMENT BigAutoField bigint AUTO_INCREMEN ...