xugu数据库对比mysql,字符集设置对查询大小写敏感的影响

1、字符集和校验规则对比说明

在新建数据库的时候,往往需要指定数据库的字符集,在xugu中建库时若不指定字符集则默认为gbk(和xugu.ini中的def_charset参数一致),且一旦建库完成则该库的字符集无法修改。当前xugu支持的字符集列表如下:
在这里插入图片描述
各列名分别对应:字符集名、校验名、最大位数、最小位数、注释。
可以看到同一个字符集可以包含有多个校验名,COLLATE_NAME值,理解为用来排序的规则,所有涉及到字符类型比较或排序的地方,都和COLLATE_NAME有关。

对比在mysql中utf8字符集存在多种COLLATION:

COLLATIONDESCRIPTION
utf8_general_ciCase Insensitive,大小写不敏感,兼容性不高,性能高
utf8_unicode_ciCase Insensitive,大小写不敏感 ,兼容性高,能识别处理特殊字符,性能不高
utf8_general_csCase Sensitive,大小写敏感
utf8_binBINARY,将字符用二进制数据存储,从最高位往最低位逐位比对,大小写敏感

xugu在关闭mysql兼容模式时,如果需要建立对象名为小写的对象,则在小写对象名上加一对双引号即可;若未加双引号,则默认转对象名为大写。

在mysql中,若建表时未指定COLLATE则默认COLLATION 为utf8mb4_general_ci,即大小写不敏感。
在xugu建utf8库默认为大小写敏感,若指定字符集为utf8_general_ci(同SYSTEM系统库),则大小写不敏感。

2、查询大小写敏感的简单示例

方式一

#方式一
select version();#5.7.37-log
CREATE TABLE test(name varchar(10));
INSERT INTO test values('a'),('A'),('Aa');
SELECT * FROM test WHERE name LIKE '%a%';
SELECT * FROM test WHERE name LIKE '%A%';

 
 

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    mysql默认不区分大小写,如果某字段需要区分大小写,可以在定义该字段时指定binary属性,或者也可以在查询语句中,使用binary命令强行区分大小写。
    在这里插入图片描述
    在这里插入图片描述

    方式二

    #方式二
    #建表时指定表级COLLATE例如:
    CREATE TABLE test_1(name varchar(10)) CHARSET=utf8 COLLATE=utf8_bin;
    INSERT INTO test_1 values('a'),('A'),('Aa');
    SELECT * FROM test_1 WHERE name LIKE '%a%';
    SELECT * FROM test_1 WHERE name LIKE '%A%';
    
     
     

      在这里插入图片描述

      在这里插入图片描述
      在这里插入图片描述

      3、小结

      在mysql中使用第一种方式建表时,即大小写不敏感;xugu暂不支持设置表级COLLATE,默认同库级字符集设置,若在xugu中想要得到和mysql相同的查询结果,则需在建库时指定字符集为utf8_general_ci。

      create database db_name char set 'utf8_general_ci';
      
       
       
      文章知识点与官方知识档案匹配,可进一步学习相关知识
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值