zoukankan      html  css  js  c++  java
  • 25 全球化和本地化

    25.1 字符集和校对顺序

    • 数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集,适应不同的排序和检索数据的方法。
    • 语言和字符集的重要术语:
      • 字符集 为字母和符合的集合
      • 编码 为某个字符集成员的内部表示
      • 校对 为规定字符如何比较的指令
    • 使用何种字符集和校对的决定在服务器、数据库和表级进行。

    25.2 使用字符集和校对顺序

    • MySQL支持众多的字符集。为查看所支持的字符集完整列表,使用以下语句:
    show character set;
    
    • 这条语句显示所有可用的字符集以及每个字符集的描述和默认校对。
    • 为了查看所支持校对的完整列表,使用以下语句:
    show collation;
    
    • 此语句显示所有可用的校对,以及它们使用的字符集。可以看到有的字符集不止一种校对。例如,latin1对不同的欧洲语句有几种校对,而且许多校对出现两次,一次区分大小写,一次不区分大小 写。
    • 通常系统管理在安装时定义一个默认的字符集和校对。此外,也可以在创建数据库时,指定默认的字符集和校对。为了确定所用的字符集和校对,可以使用以下语句:
    show variables like 'charactrer%';
    show variables like 'collation%';
    
    • 实际上,字符集很少是服务器范围的设置。不同的表,甚至不同的列都可能需要不同的字符集,而且两者都可以创建表时指定。
    • 为了给表指定字符集和校对,可使用带子句的create table:
    create table mytable(
        column1 int,
        column2 varchar(10)
    ) default character set hebrew
     collate hebrew_general_ci;
    
    • 此语句创建一个包含两列的表,并且指定一个字符集和一个校对顺序。
    • 这个例子中指定了character set和collate两者。一般,MySQL如下确定使用什么样的字符集和校对。
      • 如果指定character set和collate两者,则使用这些值
      • 如果只指定character set,则使用此字符集及默认的校对
      • 如果既不指定character set,也不指定collate,则使用数据库默认
    • 除了能指定字符集和校对的表范围外,MySQL还允许对每个列设置它们,如下所示:
    create table mytable(
        column1 int,
        column2 varchar(10),
        column3 varchar(10) character set latin1 collate
        latin1_general_ci;
    ) default character set behrew
    collate behrew_general_ci;
    
    • 这里对整个表以及一个特定的列指定了character set和collate。
    • 校对在对用order by子句检索出来的数据排序起重要的作用。如果你需要用与创建表时不同的校对顺序排序特定的select语句,可以在select语句自身中进行:
    select * from customers
    order by lastname, firstname collate latina1_general_cs;
    
    • 此select使用collate指定一个备用的校对顺序。这显然将会影响到结果排序的次序。
    • select的其他collate子句 除了这里看到的在order by子句中使用以外,collate还可以用于group by、having、聚集函数、别名等。
    • 如果绝对需要,串可以在字符集之间进行转换。使用Cash()或Convert()函数。
  • 相关阅读:
    开源界的 5 大开源许可协议
    如何选择开源许可证?
    Ubuntu下Qt编译报错“cannot find -lGL”的解决方案
    How to Cracked Sublime Text 3 Build 3065 in Ubuntu (Linux)
    一个C语言宏展开问题
    C语言预处理运算符
    Linux线程编程之信号处理
    Linux终端多用户通信实用命令
    守护进程接收终端输入的一种变通性方法(二)
    通过printf设置Linux终端输出的颜色和显示方式
  • 原文地址:https://www.cnblogs.com/sanjun/p/8295053.html
Copyright © 2011-2022 走看看