zoukankan      html  css  js  c++  java
  • 数据库字符集与排序规则(Character Set And Collation)

      数据库需要适应各种语言和字符就需要支持不同的字符集Character Set),每种字符集也有各自的排序规则Collation)。

    (注意:Collation原意为校对,校勘,但是根据实际使用场景,觉得还是翻译为排序规则比较合适)

      在绝大部分情形中,使用何种字符集和排序规则决定于服务器,数据库和表的级别,一般SQL操作不必关心这些。

    以下操作均以MySQL为例。

    查看数据库支持的字符集与排序规则

    查看字符集:

    SHOW CHARACTER SET;

    部分结果:

    查看排序规则:(后缀"_cs"或者"_ci"意思是区分大小写和不区分大小写(Case Sensitive & Case Insensitve))

    SHOW COLLATION;

    部分结果:

    使用数据库支持的字符集与排序规则

      通常系统管理在安装时定义一个默认的字符集和排序规则,

    也可以在创建数据库时对数据库范围,建表时对表级别,甚至列级别设置字符集和排序规则。

    > 下图为建数据库时指定字符集和排序规则

    为了确定所用的字符集和排序规则,可以使用下列语句:

    SHOW VARIABLES LIKE 'character%';
    SHOW VARIABLES LIKE 'collation%';

    > 建表时指定表的字符集和排序规则

    1 CREATE TABLE mytable (
    2     column1 INT,
    3     column2 VARCHAR (10)
    4 ) DEFAULT CHARACTER SET hebrew
    5 COLLATE hebrew_general_ci;

    不指定字符集和排序规则时使用数据库默认设置,若指定了字符集没有指定排序规则,则使用字符集的默认排序规则。

    >建表时指定表和列的字符集和排序规则

    CREATE TABLE mytable (
        column1 INT,
        column2 VARCHAR (10),
        column3 VARCHAR (10) CHARACTER SET latin1 
            COLLATE latin1_general_ci
    ) DEFAULT CHARACTER SET hebrew 
        COLLATE hebrew_general_ci;

    >自定义查询语句中ORDER BY的排序规则

    SELECT * FROM `mytable` ORDER BY `column1` COLLATE latin1_general_cs;

    这里的使用不限于ORDER BY,还有GROUP BY,聚集函数等。

    参考文章:

    【1】MySQL必知必会 2009年1月第一1版 第27章 “全球化与本地化”

  • 相关阅读:
    Permutation Test 置换检验
    计算机会议排名等级
    国际顶级计算机会议
    机器学习中的范数规则化 L0、L1与L2范数 核范数与规则项参数选择
    岭回归(Ridge Regression)
    popupWindow使用timePicker时点击出现闪屏问题的解决办法
    Java:单例模式的七种写法
    JSONObject遍历获取键值方法合并两个JSONObject
    解决android studio上“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65935”问题
    解决同时共用MOB公司的shareSDK和SMSSDK的冲突问题
  • 原文地址:https://www.cnblogs.com/tlz888/p/7067835.html
Copyright © 2011-2022 走看看