GBase 8a
运维管理
文章

gbase8a中的大小写

发表于2025-06-06 17:51:1476次浏览3个评论

gbase8a中大小写区分与否原则

1)投影列中的等值比较默认不区分大小写(新版本有参数支持区分),过滤条件部分的等值比较默认区分,等值比较中涉及函数时以函数特征为准;

2)替换类函数区分大小写,如replace、translate,可以理解为在替换类处理时更严谨;

3)比较类函数默认不区分大小写,如greatest、field、find_in_set、instr、locate、case when、decode等,可理解为在比较等处理时默认宽松。

另外:

区分大小写的解决办法:

有两种方法,第一种使用仅需在列名称前加binary关键字,及以二进制形式校对,该方式更为灵活,建议采用第一种。

1)在列名称前写关键字binary,即强行指定按照字符的二进制进行运算,如select binary a1='AAA' from t1;

2)在建表时指定binary关键字,则字符运算时强行指定按照字符的二进制进行运算,以下t1为默认方式,t2表为指定校对规则为bin的方式。

| t1 | CREATE TABLE "t1" (

"a1" varchar(10) DEFAULT NULL

) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |

| t2 | CREATE TABLE "t2" (

"a1" varchar(10) COLLATE utf8_bin DEFAULT NULL

) ENGINE=EXPRESS DEFAULT CHARSET=utf8 COLLATE=utf8_bin TABLESPACE='sys_tablespace' |

例如:

CREATE TABLE "t1" (

"a1" varchar(10)

)

CREATE TABLE "t2" (

"a1" varchar(10)

) COLLATE=utf8_bin ---可以使投影列比较也区分

CREATE TABLE "t3" (

"a1" varchar(10) COLLATE utf8_bin --指定字段没起作用

)

create database ds2 COLLATE utf8_bin; ---可以库级别指定,投影列中也区分

评论

登录后才可以发表评论
崔哥发表于 6个月前
千点寒梅晓角中,一番春信画楼东。收灯庭院迟迟月,落索秋千翦翦风。鱼雁杳,水云重,异乡节序恨匆匆。当歌幸有金陵子,翠斝清尊莫放空。
崔哥发表于 3个月前
楼上黄昏欲望休,玉梯横绝月中钩。芭蕉不展丁香结,同向春风各自愁。东南日出照高楼,楼上离人唱石州。总把春山扫眉黛,不知供得几多愁?
zixuwang发表于 2个月前
学会了