返回首页

gbase数据、南大通用产品文档:GBase8acase_when 不区分大小写

更新日期:2024年09月11日

问题现象
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
|

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
122
+------+------+------------------------------------------------------+
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 即可
达到效果。

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
123

通过本功能您可以查看系统数据的表、视图相关信息。

语法
调用一个语句的语法请参见图1。
图1 call_clause::=
对以上语法格式的解释如下:

procedure_name:存储过程名。

parameter:存储过程的参数,可以没有或者有多个参数。