Table des matières
字符串类型
字符集和排序方式
常用函数
与字符集有关的系统变量
Maison base de données tutoriel mysql [MySQL] 字符集跟排序方式

[MySQL] 字符集跟排序方式

Jun 07, 2016 pm 04:15 PM
mysql 字符集 排序 方式

[MySQL] 字符集和排序方式 字符串类型 MySQL的字符串分为两大类: 1)二进制字符串:即一串字节序列,对字节的解释不涉及字符集,因此它没有字符集和排序方式的概念 2)非二进制字符串:由字符构成的序列,字符集用来解释字符串的内容,排序方式决定字符的大

[MySQL] 字符集和排序方式

字符串类型

MySQL的字符串分为两大类:

1)二进制字符串:即一串字节序列,对字节的解释不涉及字符集,因此它没有字符集和排序方式的概念

2)非二进制字符串:由字符构成的序列,字符集用来解释字符串的内容,排序方式决定字符的大小


字符集和排序方式

字符集和排序方式的关系是这样的:一个字符集可以有一个或多个排序方式,有一个默认的排序方式,我们可以通过以下例子说明:

mysql> show character set like '%gbk%';
+---------+------------------------+-------------------+--------+
| Charset | Description            | Default collation | Maxlen |
+---------+------------------------+-------------------+--------+
| gbk     | GBK Simplified Chinese | gbk_chinese_ci    |      2 | 
+---------+------------------------+-------------------+--------+
1 row in set (0.00 sec)

mysql> show collation like '%gbk%';
+----------------+---------+----+---------+----------+---------+
| Collation      | Charset | Id | Default | Compiled | Sortlen |
+----------------+---------+----+---------+----------+---------+
| gbk_chinese_ci | gbk     | 28 | Yes     | Yes      |       1 | 
| gbk_bin        | gbk     | 87 |         | Yes      |       1 | 
+----------------+---------+----+---------+----------+---------+
2 rows in set (0.00 sec)
Copier après la connexion
从上例中我们可以看出字符集gbk有两个排序方式(分别为gbk_chinese_ci何gbk_bin),其中默认的排序方式为gbk_chinese_ci。

排序方式的命名规则为:字符集名字_语言_后缀,其中各个典型后缀的含义如下:

1)_ci:不区分大小写的排序方式

2)_cs:区分大小写的排序方式

3)_bin:二进制排序方式,大小比较将根据字符编码,不涉及人类语言,因此_bin的排序方式不包含人类语言

因此,gbk_chinese_ci排序方式就表示:字符集为gbk,人类语言使用中文来比较大小,比较时区分大小写。


常用函数

字符集引导

字符集引导可以让MySQL指定一种字符集来解释字符常量,其语法为:

_charset str

如:

_utf8 'ABCD'   表示以utf8字符集来介绍字符串常量'ABCD'

字符集转换

convert()函数可以把一个字符串转换成指定字符集,其语法为:

convert(str using charset)

如 convert('ABCD' using utf8)  表示把'ABCD'的字符集转换成uft8

length()函数  --返回字节的长度

char_length()  --返回字符长度


与字符集有关的系统变量

通过以下语句可以查看与字符集有关的系统变量:
mysql> show variables like 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | latin1 | 
| character_set_connection | latin1 | 
| character_set_database   | gbk    | 
| character_set_filesystem | binary | 
| character_set_results    | latin1 | 
| character_set_server     | gbk    | 
| character_set_system     | utf8   | 
+--------------------------+--------+
7 rows in set (0.01 sec)

mysql> show variables like 'collation\_%';              
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci | 
| collation_database   | gbk_chinese_ci    | 
| collation_server     | gbk_chinese_ci    | 
+----------------------+-------------------+
3 rows in set (0.00 sec)
Copier après la connexion
它们的含义如下: character_set_system:MySQL数据库标识符使用的字符集,永远是utf8 character_set_server和collation_server:服务器的默认字符集和排序方式 character_set_database和collation_database:当前数据库的默认字符集和排序方式
以下三个变量将影响客户端和服务器之间的通信: character_set_client:客户端向服务器发送SQL语句使用的字符集
character_set_results:服务器向客户端返回结果时使用的字符集
character_set_connection:如果它和character_set_client不同,从客户端发来的SQL语句将转换为它指定的字符集 默认情况下,上述三个变量都设为为相同的值,如果某个客户端想使用另一种字符集与服务器通信,可以修改它们,如:
set character_set_client = utf8;
set character_set_results = utf8;
set character_set_connection = utf8;
Copier après la connexion
或者,更简单的方法是使用如下一条语句也能达到相同的效果:
set names 'utf8';
Copier après la connexion


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Compétences de traitement de structures de données volumineuses de PHP Compétences de traitement de structures de données volumineuses de PHP May 08, 2024 am 10:24 AM

Compétences de traitement de structures de données volumineuses de PHP

Comment optimiser les performances des requêtes MySQL en PHP ? Comment optimiser les performances des requêtes MySQL en PHP ? Jun 03, 2024 pm 08:11 PM

Comment optimiser les performances des requêtes MySQL en PHP ?

Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Jun 03, 2024 pm 12:19 PM

Comment utiliser la sauvegarde et la restauration MySQL en PHP ?

Comment insérer des données dans une table MySQL en utilisant PHP ? Comment insérer des données dans une table MySQL en utilisant PHP ? Jun 02, 2024 pm 02:26 PM

Comment insérer des données dans une table MySQL en utilisant PHP ?

Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ? Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ? May 05, 2024 am 09:06 AM

Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ?

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Dec 09, 2024 am 11:42 AM

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4

Comment utiliser les procédures stockées MySQL en PHP ? Comment utiliser les procédures stockées MySQL en PHP ? Jun 02, 2024 pm 02:13 PM

Comment utiliser les procédures stockées MySQL en PHP ?

Comment créer une table MySQL en utilisant PHP ? Comment créer une table MySQL en utilisant PHP ? Jun 04, 2024 pm 01:57 PM

Comment créer une table MySQL en utilisant PHP ?

See all articles