MonetDB中按巴西葡萄牙语规则排序带重音字符的配置咨询
如何在MonetDB中配置巴西葡萄牙语排序规则(忽略重音)
当然可以!MonetDB支持通过配置排序规则(collation)来实现你想要的巴西葡萄牙语排序效果——让带重音的字符归入对应字母分组,同时忽略重音的影响,不会让它们排在首位。下面是具体的实现步骤和细节说明:
先确认MonetDB的排序规则支持
MonetDB依靠系统的ICU(Unicode国际化组件)库处理多语言排序,大部分现代版本默认已经启用了ICU支持。你可以先执行这条SQL查看当前数据库可用的排序规则:SELECT * FROM sys.collations;找找看有没有
pt_BR相关的选项,比如pt_BR-u-ks-level2(这个规则会忽略重音和大小写,刚好匹配你的需求)。新建表时直接指定排序规则
如果是刚创建products表,在定义字符串列的时候就可以指定巴西葡萄牙语排序规则:CREATE TABLE products ( product_name VARCHAR(255) COLLATE pt_BR-u-ks-level2 );之后执行
select product_name from products order by product_name时,Água Oxigenada就会和其他以A开头的条目归为一组,不会单独排在最前面。修改现有表的列排序规则
如果products表已经存在,也可以通过ALTER TABLE命令修改列的排序规则:ALTER TABLE products ALTER COLUMN product_name SET COLLATE pt_BR-u-ks-level2;查询时临时指定排序规则(无需改表)
要是不想改动表结构,也可以在每次查询时临时指定排序规则:SELECT product_name FROM products ORDER BY product_name COLLATE pt_BR-u-ks-level2;关于排序规则的小补充
pt_BR明确指定了巴西葡萄牙语的区域设置u-ks-level2里的level2表示排序时只比较基本字符,忽略重音和变音符号;如果需要更精细的排序(比如先按基本字符分组,再按重音区分),可以用level1,但你的需求用level2就完全足够啦。
内容的提问来源于stack exchange,提问作者Alexandre
相关产品推荐
相关产品推荐

