搜尋
首頁資料庫mysql教程[MySQL] 字符集和排序方式_MySQL

bitsCN.com

[MySQL] 字符集和排序方式

 

MySQL的字符串分为两大类:

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

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

 

字符集和排序方式

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

[sql] 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)  

 

从上例中我们可以看出字符集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()  --返回字符长度

 

与字符集有关的系统变量

通过以下语句可以查看与字符集有关的系统变量:

[sql] 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)  

 

它们的含义如下:

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语句将转换为它指定的字符集

默认情况下,上述三个变量都设为为相同的值,如果某个客户端想使用另一种字符集与服务器通信,可以修改它们,如:

[sql] set character_set_client = utf8;  set character_set_results = utf8;  set character_set_connection = utf8;  

 

或者,更简单的方法是使用如下一条语句也能达到相同的效果:

[sql] set names 'utf8';  

 


bitsCN.com
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
php怎么将16进制字符串转为数字php怎么将16进制字符串转为数字Oct 26, 2021 pm 06:36 PM

php将16进制字符串转为数字的方法:1、使用hexdec()函数,语法“hexdec(十六进制字符串)”;2、使用base_convert()函数,语法“bindec(十六进制字符串, 16, 10)”。

golang怎么检测变量是否为字符串golang怎么检测变量是否为字符串Jan 06, 2023 pm 12:41 PM

检测变量是否为字符串的方法:1、利用​“%T”格式化标识,语法“fmt.Printf("variable count=%v is of type %T \n", count, count)”;2、利用reflect.TypeOf(),语法“reflect.TypeOf(变量)”;3、利用reflect.ValueOf().Kind()检测;4、使用类型断言,可以对类型进行分组。

二进制算法怎么算二进制算法怎么算Jan 19, 2024 pm 04:38 PM

二进制算法是一种基于二进制数的运算方法,其基本运算包括加法、减法、乘法和除法。除了基本运算外,二进制算法还包括逻辑运算、位移运算等操作。逻辑运算包括与、或、非等操作,位移运算包括左移和右移操作。这些操作都有对应的规则和操作数的要求。

EDVAC有哪两个重大的改进EDVAC有哪两个重大的改进Mar 02, 2023 pm 02:58 PM

EDVAC的两个重大的改进:一是采用二进制,二是完成了存贮程序,可以自动地从一个程序指令进到下一个程序指令,其作业可以通过指令自动完成。“指令”包括数据和程序,把它们用码的形式输入到机器的记忆装置中,即用记忆数据的同一记忆装置存贮执行运算的命令,这就是所谓存贮程序的新概念。

如何使用C语言将二进制转换为十六进制?如何使用C语言将二进制转换为十六进制?Sep 01, 2023 pm 06:57 PM

二进制数以1和0表示。16位的十六进制数系统为{0,1,2,3…..9,A(10),B(11),……F(15)}为了从二进制表示转换为十六进制表示,位串id被分组为4位块,从最低有效侧开始称为半字节。每个块都替换为相应的十六进制数字。让我们看一个示例,以清楚地了解十六进制和二进制数字表示。001111100101101100011101 3  E  5  B&nb

php怎么将字符串转为布尔类型php怎么将字符串转为布尔类型Jul 01, 2021 pm 06:36 PM

转换方法:1、在转换变量前加上用括号括起来的目标类型“(bool)”或“(boolean)”;2、用boolval()函数,语法“boolval(字符串)”;3、用settype()函数,语法“settype(变量,"boolean")”。

Golang如何读取二进制文件?Golang如何读取二进制文件?Mar 21, 2024 am 08:27 AM

Golang如何读取二进制文件?二进制文件是以二进制形式存储的文件,其中包含了计算机能够识别和处理的数据。在Golang中,我们可以使用一些方法来读取二进制文件,并将其解析成我们想要的数据格式。下面将介绍如何在Golang中读取二进制文件,并给出具体的代码示例。首先,我们需要使用os包中的Open函数打开一个二进制文件,这将返回一个文件对象。然后,我们可以使

轻松学会Go语言中16进制转二进制轻松学会Go语言中16进制转二进制Mar 15, 2024 pm 04:45 PM

题目:轻松学会Go语言中16进制转二进制,需要具体代码示例在计算机编程中,经常会涉及到对不同进制数之间的转换操作。其中,16进制和二进制之间的转换是比较常见的。在Go语言中,我们可以通过一些简单的代码示例来实现16进制到二进制的转换,让我们一起来学习一下。首先,我们来了解一下16进制和二进制的表示方法。16进制是一种表示数字的方法,使用0-9和A-F来表示1

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用