我正在运行一个相当简单的查询来选择Vertica 7.1中表格的内容,我有一个关于最后排序的问题。你看,这张桌子用法语显示各种健康服务......所以我自然会碰巧有一些重音字符。例如,假设我的表中有以下数据,并在以下情况后立即运行查询:
//This is some sample data
Électrocardiogramme
Radiographie
Anesthésie
Équipement divers
Massothérapie
Encéphalogramme
//This is the query I run
select * from myTable order by Description
这是我目前最终的结果:
Anesthésie
Encéphalogramme
Massothérapie
Radiographie
Électrocardiogramme
Équipement divers
正如您所看到的,重音符号会以这样的方式抛出排序,即“É”全部出现在列表的末尾。现在我理解它背后的逻辑,因为在UTF-8表中,“E”和“É”是两个不同的字符,所有重音字符在技术上都出现在“正常字母之后”,因此结果如上所示。
但是,就我而言,我希望以这种方式呈现结果:
Anesthésie
Électrocardiogramme
Encéphalogramme
Équipement divers
Massothérapie
Radiographie
基本上,我希望Vertica将重音角色视为其不重要的对手。有没有办法在不改变表中包含的数据的情况下做到这一点?
答案 0 :(得分:2)
您希望更改排序顺序的COLLATION
。根据描述,我假设是法国人。您可以找到排序规则名称或区域设置here的完整选项列表。
SELECT * FROM myTable ORDER BY COLLATION(Description,'FRA')
答案 1 :(得分:-1)
如果您更好地订购它们,您可以使用以下功能:
- 使用colation funtion
COLLATION ( 'expression' [ , 'locale_or_collation_name' ] )
或(不那么干净)
select * from table
order by replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(Description, 'é', 'e'), 'è', 'e'),'ê', 'e'), 'ë', 'e'), 'è', 'e'), 'ï','i'), 'î', 'i'), 'ô', 'o'), 'œ','oe'), 'à', 'a'), 'â', 'a'), 'ù', 'u'), 'û', 'u'), 'ü', 'u'), 'ÿ', 'y'), 'É', 'E'), 'È', 'E'),'Ê', 'E'), 'Ë', 'E'), 'Ë', 'E'), 'Ï','I'), 'Î', 'I'), 'Ô', 'O'), 'Œ','OE'), 'À', 'A'), 'Â', 'A'), 'Ù', 'U'), 'Û', 'U'), 'Ü', 'U'), 'Ÿ', 'Y')