首页 > 数据库技术 > 详细

MySql 大小写之小结

时间:2021-05-06 09:54:24      阅读:42      评论:0      收藏:0      [点我收藏+]

写在前面:MySQL 及SQLServer 对于Char, Varchar, Text 默认使用_ci作为字符的校对规则,所以,这三种类型的字段中的值,在增改查的过程中是不严格区分大小写的。

而Oracle是默认严格区分大小写的。

另外:MySql 中有一个类型叫NVARCHAR,这是一个字符长度为单位的数据类型,该类型不支持utf8mb4, 支持utf8, 且collation校对规则默认为utf_general_ci,忽略大小写,而不是跟随collation_server,需在定义字段时指定校对规则,如:

ROW_ID NVARCHAR(100) CHARACTER SET utf8 COLLATE utf8_bin primary key NOT NULL

从空间和使用的角度来看,个人不是很建议在定义字段时将类型定义为NVARCHAR。

关于字符集和校对规则,这篇文章写的比较详细及准确:

那么设置表字段中的校对规则呢,个人总结常用方式有两种:

1.创建表字段时指定 charset 及 collate

create table TABLE_TL
(ROW_ID VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin primary key NOT NULL,
OBJECT_VERSION_NUMBER  NUMERIC(9) not null,
LAST_UPDATE_DATE  DATETIME not null,
LAST_UPDATED_BY  VARCHAR(64) not null,
LAST_UPDATE_LOGIN  VARCHAR(32),
CREATED_BY  VARCHAR(64) not null,
CREATION_DATE  DATETIME not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_bin;

2.修改mysql配置文件,在启动时直接指定charset 及 collate COLLATION ‘utf8_unicode_ci‘ is not valid for CHARACTER SET ‘utf8mb4‘

vi /etc/my.conf

[client]
default-character-set=utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_bin
init_connect=SET NAMES utf8mb4
skip-character-set-client-handshake = true

[mysql]
default-character-set = utf8mb4

重启mysql服务

systemctl restart mysqld

 

更多资料可查阅MySQL官方文档说明:

https://dev.mysql.com/doc/refman/5.7/en/charset-server.html

MySql 大小写之小结

原文:https://www.cnblogs.com/huanghongbo/p/14733137.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!