GBase 8a
适配迁移
文章

sql中字段值区分大小写规则

发表于2024-02-26 14:11:4947次浏览0个评论

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' |

评论

登录后才可以发表评论