**之前项目到遇到了这样的问题来总结一下**
项目中经常用到模糊查询,如:有个username字段的的内容是:AA812135023,我们查询这条记录,查询的sql select * from 表 where username
like '%AA%',能找到这条记录,但是用 select * from 表 where username like '%aa%' 也能查询到这条记录.
问题出在哪里?出现在创建数据表上,应该用下面的code创建表
CREATE TABLE `message` (
`msgId` BIGINT(20) NOT NULL
COMMENT '消息ID',
`bizType` INT(11) NOT NULL
COMMENT '消息业务类型 参见枚举BizType',
`bizId` INT(11) NOT NULL
COMMENT '消息对应的业务ID',
`src` BIGINT(20) NOT NULL
COMMENT '发送者ID',
`dst` BIGINT(20) NOT NULL
COMMENT '接受者ID',
`msgStatus` INT(11) NOT NULL
COMMENT '消息状态 参见枚举MsgStatus',
`status` INT(11) DEFAULT '0'
COMMENT '参考枚举:Status',
`createBy` INT(11) DEFAULT '0',
`createTime` DATETIME DEFAULT NULL,
`updateBy` INT(11) DEFAULT '0',
`updateTime` DATETIME DEFAULT NULL,
`lastUpdate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`msgId`)
)
ENGINE = InnoDB //使用的搜索引擎,有以下几种引擎:ISAM、MyISAM、HEAP、InnoDB和Berkley(BDB)
DEFAULT CHARSET = utf8 //编码格式,有时候数据库乱码就出现在这里.
DEFAULT COLLATE = utf8_bin;//查询对大小写敏感
那不是每个表都需要下面这段东西,这样显的比较繁琐,
ENGINE = InnoDB //使用的搜索引擎,有以下几种引擎:ISAM、MyISAM、HEAP、InnoDB和Berkley(BDB)
DEFAULT CHARSET = utf8 //编码格式,有时候数据库乱码就出现在这里.
DEFAULT COLLATE = utf8_bin;//查询对大小写敏感
我们创建数据库的时候,用下面的code就不用每个表都写上面这一段了
create database test default character set utf8 collate utf8_bin;
如果你的数据已经建好了,修改即可
ALTER SCHEMA `bbj_local` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin ;
如何修改mysql默认的搜索引擎?
1、查看mysql存储引擎命令,在mysql>提示符下搞入show engines;字段 Support为:Default表示默认存储引擎
2、设置InnoDB为默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句
3、重启mysql服务器:mysqladmin -u root -p shutdown或者service mysqld restart 登录mysql数据库,