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

本文介绍了Xugu和MySQL在新建数据库时字符集的选择、校验规则的区别,以及如何在Xugu中实现大小写敏感查询。Xugu不支持表级COLLATE,需要通过指定字符集来模拟MySQL的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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';
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值