zoukankan      html  css  js  c++  java
  • MySql 大小写之小结

    写在前面:MySQL 及SQLServer 对于Char, Varchar, Text 默认使用_ci作为字符的校对规则,所以,这三种类型的字段中的值,在增改查的过程中是不严格区分大小写的。

    而Oracle是默认严格区分大小写的。

    另外:MySql 中有一个类型叫NVARCHAR,这不是MySQL的标准类型,这是一个扩展类型这是一个字符长度为单位的数据类型,该类型不支持utf8mb4, 仅支持utf8, 且collation校对规则默认为utf_general_ci,忽略大小写,而不是跟随collation_server,需在定义字段时指定校对规则,如:

    ROW_ID NVARCHAR(100) CHARACTER SET utf8 COLLATE utf8_bin primary key NOT NULL

    从空间和使用的角度来看,个人不是很建议在定义字段时将类型定义为NVARCHAR。

    关于字符集和校对规则,这篇文章写的比较详细及准确:

    mysql中的字符集和校对规则(mysql校对集)

    那么设置表字段中的校对规则呢,个人总结常用方式有两种:

    1.创建表字段时指定 charset 及 collate

    create table TABLE_TL
    (ROW_ID VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin primary key NOT NULL,
    OBJECT_VERSION_NUMBER  NUMERIC(9) not null,
    LAST_UPDATE_DATE  DATETIME not null,
    LAST_UPDATED_BY  VARCHAR(64) not null,
    LAST_UPDATE_LOGIN  VARCHAR(32),
    CREATED_BY  VARCHAR(64) not null,
    CREATION_DATE  DATETIME not null
    )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_bin;

    2.修改mysql配置文件,在启动时直接指定charset 及 collate COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'utf8mb4'

    vi /etc/my.conf

    [client]
    default-character-set=utf8mb4
    
    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_bin
    init_connect='SET NAMES utf8mb4'
    skip-character-set-client-handshake = true
    
    [mysql]
    default-character-set = utf8mb4

    重启mysql服务

    systemctl restart mysqld

    更多资料可查阅MySQL官方文档说明:

    https://dev.mysql.com/doc/refman/5.7/en/charset-server.html

  • 相关阅读:
    linux配置PHP环境!!(云服务器架设)
    JQ上传预览+存数据库
    AJAX做增删改查详细!
    JS解析XML
    UEditor编辑器的使用
    php注释规范
    phpexcel导出数据表格
    简单分析JavaScript中的面向对象
    制作smarty模版缓存文件
    求二叉树中节点的最大距离
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/14733137.html
Copyright © 2011-2022 走看看