1、jpa插入mysql时中文乱码
(1)在mysql中新建查询 show variables like 'char%',看到character_set_server的值为latin1,
(2)修改mysql.ini中
[mysqld]下的
character-set-server=utf8
(mysql5.7的ini在C:\ProgramData\MySQL\MySQL Server 5.7目录下)
2、jpa查询时不区分大小写,在Mysql数据库中进行查询时,希望英文严格区分大小写。默认情况下是不区分大小写的。
Mysql默认的字符检索策略:utf8_general_ci,表示不区分大小写;utf8_general_cs表示区分大小写,utf8_bin表示二进制比较,同样也区分大小写 。(注意:在Mysql5.6.10版本中,不支持utf8_genral_cs!!!!)
所有方式一:创建表时,直接设置表的collate属性为utf8_general_cs或者utf8_bin;如果已经创建表,则直接修改字段的Collation属性(或叫排序规则)为utf8_general_cs或者utf8_bin。
创建表:
CREATE TABLE testt(
id INT PRIMARY KEY,
name VARCHAR(32) NOT NULL
) ENGINE = INNODB COLLATE =utf8_bin;
如果表已经创建,则修改表结构中Collation字段
这时候,再执行上面的两条sql语句,则会严格区分大小写。
(2).第二种方式比较简单,是直接修改sql语句,在要查询的字段前面加上binary关键字即可。
SELECT * FROM emp WHERE BINARY emp.job='Engineer'
SELECT * FROM emp WHERE BINARY emp.job='ENGINEER'
链接:https://www.imooc.com/article/14190
3、日期类型的字符串排序,空值在最上面
SELECT * FROM projects ORDER BY LENGTH(trim(pubdate))<1 DESC,pubdate DESC