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

MYSQL必知必会读书笔记 第二十七章 字符集和校对规则

2016-05-13 14:54 501 查看
数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集,适应不同的排序和检索数据的方法。

字符集:字符集为字母和符号的集合。

编码为某个字符集成员的内部表示;

校对为规定字符如何比较的指令;

校对为什么重要:排序英文很容易对吗?或许不是,考虑到APE、apex和Apple。它们处于正确的排序顺序吗?这有赖与你是否想区分大小写。使用区分大小写的校对顺序,这些词有一种排序方式,使用不区分大小写的校对顺序有另外一种排序方式。其他语言如法文、德文更为复杂。

显示字符集:SHOWCHARACTERSET;

显示字符集和校对

SHOWVARIABLESLIKE'character%';

SHOWVARIABLESLIKE'collation%';

创建一个表并指定一个字符集和一个校对顺序:

CREATETABLEmytale(

col1INT,

col2VARCHAR(10)

)DEFAULTCHARACTERSEThebrew

COLLATEhebrew_general_ci;//后面的ci就是忽略大小写有时可以使用cs表示区分大小写。

MySQL除了指定表范围的字符集和校对外,也可在列上设置它们。

最后值得注意的是,如果绝对需要,串可以在字符集之间进行转换。为此,使用CAST()和
CONVERT()


MySQL的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:

1
CAST
(value

as
type);
2
CONVERT
(value,type);
就是CAST(xxxAS类型),CONVERT(xxx,类型)。

可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

二进制,同带binary前缀的效果:BINARY
字符型,可带参数:CHAR()
日期:DATE
时间:TIME
日期时间型:DATETIME
浮点数:DECIMAL
整数:SIGNED
无符号整数:UNSIGNED

下面举几个例子:

例一

1
mysql>
SELECT

CONVERT
(
'23'
,SIGNED);
2
+
----------------------+
3
|
CONVERT
(
'23'
,SIGNED)|
4
+
----------------------+
5
|23|
6
+
----------------------+
7
1row
in

set
例二

1
mysql>
SELECT

CAST
(
'125e342.83'

AS
signed);
2
+
------------------------------+
3
|
CAST
(
'125e342.83'

AS
signed)|
4
+
------------------------------+
5
|125|
6
+
------------------------------+
7
1row
in

set
例三

1
mysql>
SELECT

CAST
(
'3.35'

AS
signed);
2
+
------------------------+
3
|
CAST
(
'3.35'

AS
signed)|
4
+
------------------------+
5
|3|
6
+
------------------------+
7
1row
in

set
像上面例子一样,将varchar转为int用cast(aassigned),其中a为varchar类型的字符串。

例4

在SQLServer中,下面的代码演示了datetime变量中,仅包含单纯的日期和单纯的时间时,日期存储的十六进制存储表示结果。

01
DECLARE@dtdatetime
02
03
--单纯的日期
04
SET@dt=
'1900-1-2'
05
SELECTCAST(@dt
as

binary(8))
06
--结果:0x0000000100000000
07
08
--单纯的时间
09
SET@dt=
'00:00:01'
10
SELECTCAST(@dt
as

binary(8))
11
--结果:0x000000000000012C
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: