ob数据库能不能针对字段的值设置查询时区分大小写?可以的话怎么设置?

码表里同时有码值A和a,应用查询码表转码时,查询时条件是code=A,结果把a也给查出来了,应该查出来一条数据,结果查出来了2条,导致报错,
ob数据库能不能针对字段的值设置查询时区分大小写?
查询条件为code=A时,不要把a也给查出来?
可以的话怎么设置?

1 个赞

lower_case_table_names 有这么个参数,不知道是不是你要的
lower_case_table_names-V4.3.3-OceanBase 数据库文档-分布式数据库使用文档

2 个赞

这个呢是因为ob数据库创建租户使用的默认字符序是utf8mb4_generl,是不区分大小写的。建议调整表的字符序为utf8mb4_bin可以解决你的需求。
ALTER TABLE test_collation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;该命令可以在线调整表的字符序。

3 个赞

谢谢,这个可以,同时测试了下和其他表不同排序方式的字段,关联查询,也没有受到影响

谢谢,不过这个是针对表名大小写的,我要找的是查询时字段的值,区分大小写。

可能会存在不同排序的2表关联查询不能走索引的问题,可以参考https://ask.oceanbase.com/t/topic/35613940这个问题

2 个赞

创建字段的时候,设置区分大小写的 collation 就好了,详见问答区置顶帖中的 collation 部分:

【有问必答】分析一个在不同 collation 的字符串连接时,无法利用索引的问题

例如:

CREATE TABLE example (
    column_name VARCHAR(255) COLLATE utf8mb4_bin
);

也可以艾特一下论坛小助手那个机器人试试~

@论坛小助手 怎么创建一个 collation 为区分大小写的列?