gbase 8a 基础语法概念问题

本文对比了普通自定义函数与UDF(用户定义函数)在GBase8a MPPCluster中的不同,包括存储位置、创建/删除的灵活性,以及case_when函数的大小写处理。特别提到字符集对字符串比较的影响和解决方案。

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

普通自定义函数与 UDF 函数区别
问题现象
普通自定义函数与 UDF 函数区别。
解决方法
普通自定义函数通过“ select * from gbase.proc\G ”查看,普通自定义函数属于
特定的数据库。
普通自定义函数在创建、删除时,必须指定数据库,不然会报错。
udf 函数通过“ select * from gbase.func\G ”查看, udf 函数相当于全局函数。
udf 函数创建、删除时,指定或不指定数据库都行。
case_when 不区分大小写
问题现象 GBase 8a MPP Cluster FAQ FAQ
文档版本(2021-04-02) 南大通用数据技术股份有限公司
84
gbase> select * from t ;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | A |
+------+------+
2 rows in set (Elapsed: 00:00:00.00)
gbase> select id, name, case when name = 'a' then 'lower' else 'upper'
end from t where name = 'a';
+------+------+------------------------------------------------------+
| id | name | case when name = 'a' then 'lower' else 'upper' end |
+------+------+------------------------------------------------------+
| 1 | a | lower |
+------+------+------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> select id, name, case when name = 'a' then 'lower' else 'upper'
end from t where name = 'A';
+------+------+------------------------------------------------------+
| id | name | case when name = 'a' then 'lower' else 'upper' end |
+------+------+------------------------------------------------------+
| 2 | A | lower |
+------+------+------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
解决方法:
一、对于老表
1、可以删除,重建,加上 collate utf8_bin 如: create table ** default
character set utf8 collate utf8_bin
2、增加 binary 关键字改写。如: select case binary b where ......
二、对于要新建的表
1、修改集群层和节点层的配置文件, collation-server=utf8_bin
2、建表时加上 collate utf8_bin 如:
create table ** default character set
utf collate utf8_bin
注:同样的情况不仅会出现在 case when 中,只要是出现在 select 字段后的投
影列涉及到字符串比较的问题都会有因为字符集原因导致的字符串比较问题。参考
mySql 数据库对于字符串比较的处理方式,目前 8a 的处理方式合理,不需要进行修
改,若用户需要对大小写敏感,请指定字符集或者加入关键字 binary 即可达到效
果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值