sql_mode 之 ignore_space
用于忽略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的更多相关文章
- mysql的sql_mode合理设置
mysql的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模式,所以 ...
- mysql SQL_MODE设置
1.1. SQL_MODE设置 在生产环境中强烈建议将这个值设置为严格模式,这样有些问题可以在数据库的设计和开发阶段就能实现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨 ...
- MySQL::SQL_MODE
SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空.SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插入NOT NULL的 ...
- 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 ...
- MySQL数据类型:SQL_MODE设置不容忽视
[IT168 技术]SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空.SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插 ...
- 为什么在有的服务器上禅道、蝉知安装会报错? 之理解MySQL的SQL_MODE
最近用蝉知的CMS 建站比较多,感觉蛮顺手的,但在给客户安装的时候却会出现安装报错,其原因也很简单 查看了一下他们的install.sql文件中,有些时间字段的默认值是0000-00-00 00:00 ...
- Mysql的sql_mode
(一) 基本介绍 set sql_mode="",即强制不设定MySql模式(如不作输入检测.错误提示.语法模式检查等)应该能提高性能,但有如下问题: 如果插入了不合适数据(错误类 ...
- [Mysql]由Data truncated for column联想到的sql_mode配置
系统日志中出现了 ata truncated for column 'agent' at row 1 mysql出现这个问题的原因,无非就是字符集设置 或者是 字段过长导致的. mysql在初始化的时 ...
- 设置 sql_mode
MySQL 的 sql_mode 合理设置 sql_mode 是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模 ...
随机推荐
- cs231n笔记(二) 最优化方法
回顾上一节中,介绍了图像分类任务中的两个要点: 假设函数.该函数将原始图像像素映射为分类评分值. 损失函数.该函数根据分类评分和训练集图像数据实际分类的一致性,衡量某个具体参数集的质量好坏. 现在介绍 ...
- 把一张图片变成base64
// image_file可为urlprivate function base64EncodeImage($image_file) { $image_info = getimagesize($imag ...
- 查看oracle数据库是否为归档模式
查看oracle数据库是否为归档模式 [1] 1.select name,log_mode from v$database; NAME LOG_MODE --------------- ...
- 【Java线程安全】锁
Java都有哪些锁? synchronized 和 reentranlock是最常见的,其中前者又JVM提供实现,后者有专门对应的java.util.concurrent包提供:同时后者功能更加丰富. ...
- java学习之路--String类的基本方法
String类常见的功能 获取 1.1 字符串中包含的字符数,也就是获取字符串的长度:int length(); 1.2 根据位置获取某个位置上的字符:char charAt(int index) 1 ...
- Ubuntu 安装 JDK8
安装python-software-properties $sudo apt-get install python-software-properties $sudo apt-get install ...
- 2018今日头条杯 E-Jump a Jump
Problem E. Jump A JumpInput file: standard inputOutput file: standard outputTime limit: 1 secondsMemor ...
- 20165330 2017-2018-2 《Java程序设计》第7周学习总结
课本知识总结 第十一章 JDBC与MySQL数据库 安装XAMPP软件及启动MySQL 下载链接:XAMPP 安装步骤:参考教程xampp新手学习指引(windows示例) 启动MySQL:打开系统c ...
- Storm UI说明
一.Storm ui 首页主要分为4块: Cluster Summary,Topology summary,Supervisor summary,Nimbus Configuration Cluste ...
- python框架之Django(5)-O/RM
字段&参数 字段与db类型的对应关系 字段 DB Type AutoField integer AUTO_INCREMENT BigAutoField bigint AUTO_INCREMEN ...