返回首页

gbase数据、南大通用产品文档:GBase8a^按位异或

更新日期:2024年09月11日

示例
示例1:返回“1 ^ 1”的计算结果。
gbase> SELECT 1 ^ 1 FROM t;
+-------+
| 1 ^ 1 |
+-------+
| 0 |
+-------+
1 row in set
示例2:返回“1 ^ 0”的计算结果。
gbase> SELECT 1 ^ 0 FROM t;
+-------+
| 1 ^ 0 |
+-------+
| 1 |
+-------+
1 row in set
示例3:返回“11 ^ 3”的计算结果。
gbase> SELECT 11 ^ 3 FROM t;
+--------+
| 11 ^ 3 |
+--------+
| 8 |
+--------+
1 row in set
说明
“11”对应的比特值为“1011”,“3”对应的比特值为“0011”,逐位进行异或,结果

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 552
为“1000”,对应的十进制值为“8”。

GBase 8a 当前支持的字符集有:
gbk、
gb18030、
utf8、
utf8mb4。
默认字符集为utf8。
gb18030 字符集在gbk 字符集基础上扩充了4 字节编码,express 引擎预留存
储空间时会按每个字符4 字节进行预留,在内存不足时对性能影响较大。
GBase 8a 的utf8 字符集处理1-3 字节的字符,utf8mb4 字符集处理1-4 字节
字符。
GBase 8a 当前任何字符集的校验规则都是区分大小写的。
GBase 8a 的字符集可以通过配置参数设置,也可以在建库、建表时给库、表指定
字符集。
建库表时指定字符集:
create database db_name default character set gbk;
如不指定,则使用实例的字符集。

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1601
Create table t(a int,b varchar(100)) engine=express default charset=gbk;
如不指定,则使用数据库字符集。
字符集的配置参数:
character_set_client
客户端请求数据的字符集,即客户端发送的sql 使用的字符集。可以使用
set 语句修改。
character_set_connection
接收客户端发布的查询请求后,指定转换的目标字符集。可以使用set 语
句修改。
character_set_server
数据库实例的字符集。
不建议修改,如修改只对修改后新建的库表起效,已经建立的库表字符集
不变。
character_set_results
结果集的字符集,即返回给客户端的字符集。可以使用set 语句修改。
default_character_set
数据库实例的默认字符集,只能通过配置文件设置,重启服务后起效。不
建议更改,一经更改后只对新建的库表起效,已经建立的库表不受影响。
数据库服务启动时读取default_character_set 值,其默认值为utf8。数据库
服务启动后可以通过show 查看参数character_set_server 的值来确定实例
字符集。
character_set_sort
排序使用的字符集,可以使用set 语句修改。
character_set_systerm
系统字符集,系统元数据(字段名等)字符集,不支持人工更改。
character_set_database
数据库默认字符集,用于查看当前数据库的默认字符集,不用于修改。
字符集设置
默认字符集设置:通过配置文件设置。
修改每个节点的gcluster 和gnode 配置文件
$GCLUSTER_BASE/config/gbase_8a_gcluster.cnf

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1602
$GBASE_BASE/config/gbase_8a_gbase.cnf
修改内容如下:
[client]
default_character_set=…
[gbased]
default_character_set=…
collation_server=…
修改字符集相关参数。
set [global] character_set_***=’***’
gbase 8a 不支持alter table 修改表的字符集,
修改表的字符集需要通过重建表
并导入数据完成。
字符集设置注意事项:
1、按实际情况正确设置字符集的server、client、results 相关参数
2、开发初始设计字符集时尽量使client 端字符集与server 端字符集一致,

少内部转码,转码对sql 性能有一定影响
3、Character_set_database 的值是查看当前数据库默认字符集,修改无意义
4、Character_set_systerm 不可修改
5、GBase 8a 支持的字段宽度:gbk 最大字段宽度为10922,gb18030 最大字
段宽度为8191。
6、字符集的设置,要根据8a 字符集转换流程,按实际情况正确设置字符集
相关参数,避免乱码。
sql 查询client 字符集connection 字符集库表字符集结果集
results 字符集返回给客户端
转换时当目标字符集小于源字符集时可能会出现乱码或者信息丢失;
当小字符集数据存储为大字符集后,查询时直接以大字符集显示结果,
可能出现乱码。
字符集查看
查看支持的字符集:
show charset;
查看排序规则:
show collation;
查看当前集群使用的字符集信息:

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1603
show variables like ‘%charac%’;
show variables like ‘%colla%’;

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1604
gbase> show variables like '%character%';
+--------------------------+-----------------------------------------------------------+
|
Variable_name
|
Value
|
+--------------------------+-----------------------------------------------------------+
| character_set_client
| utf8
|
| character_set_connection | utf8
|
| character_set_database
| utf8
|
| character_set_filesystem | binary
|
| character_set_results
| utf8
|
| character_set_server
| utf8
|
| character_set_sort
| binary
|
| character_set_system
| utf8mb4
|
| character_sets_dir
| /opt/192.168.146.20/gcluster/server/share/gbase/charsets/ |
+--------------------------+-----------------------------------------------------------+
9 rows in set (Elapsed: 00:00:00.00)
gbase> show variables like '%colla%';
+----------------------+-----------------+
| Variable_name
| Value
|
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database
| utf8_general_ci |
| collation_server
| utf8_general_ci |
+----------------------+-----------------+
3 rows in set (Elapsed: 00:00:00.00)

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1605
指定排序字符集
排序字符集参数:character_set_sort
取值:
binary:默认值,按排序列字符集的二进制排序
utf8:对排序列字符集进行判断,如非utf8 字符集,则先转换为utf8 字符集,再
按utf8 字符集的二进制进行排序
gbk:对排序列字符集进行判断,如非gbk 字符集,则先转换为gbk 字符集,再按
gbk 字符集的二进制进行排序。GBK 内码编码是采用拼音排序的方法。
character_set_sort 只对字符型的列进行转换,包括char、varchar、text
可以通过在配置文件中添加在[gbased]标签下设置,也可以使用set 赋值。
示例:按拼音排序
set character_set_sort=gbk;
select * from t order by col1;
乱码情况下的排序:
1. 使用utf8 编码向gbk 表中插入了gbk 无法识别的字符,
无论使用utf8 编码排
序还是gbk 编码的拼音排序,该字符均以乱码本身进行排序排在最后。
2. 大范围字符集向小范围字符集转换时出现不支持的字符乱码,排序时会使用
乱码在当前字符集下的二进制进行排序。



sword GCIIntervalSubtract (
void *hndl,
GCIError *err,
GCIInterval *minuend,
GCIInterval *subtrahend,
GCIInterval *result
);

将两个时间间隔minuend和subtrahend相减,结果写入result中。

参数
输入
/输出


hndl
输入
用户会话句柄或环境句柄,在此函数中不做验证
err
输入
错误信息句柄, 该接口调用失败时, 错误信息会存在该句柄上
minuend,
subtrahend
输入
时间间隔值减数和被减数
result
输出
计算结果

如果执行成功, 返回GCI_SUCCESS,否则返回GCI_ERROR。