您的位置:首页 > 数据库 > MySQL

mysql查询对大小写不敏感的问题

2016-10-26 10:20 453 查看
**之前项目到遇到了这样的问题来总结一下**


项目中经常用到模糊查询,如:有个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数据库,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: