2015-11-09 64 views
1

我正在運行一個相當簡單的查詢來選擇Vertica 7.1中的表的內容,並且我有一個關於最後排序的問題。你看,桌子以法語顯示各種健康服務......所以自然我碰巧有一些重音字符。例如,假設我有以下數據在我的表並運行後,立即書面查詢:排序查詢結果,同時忽略Vertica中的重音

//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的治療重音符號作爲它的重音對應。有沒有辦法做到這一點,而不改變表中包含的數據?

回答

2

您正在尋找改變排序順序的COLLATION。根據描述,我假設法語。您可以找到排序規則名稱或區域設置的完整列表here

SELECT * FROM myTable ORDER BY COLLATION(Description,'FRA') 
-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') 
  • 這將最終完成工作,但您必須嵌入任何其他acc ent選項。
+1

你去哪裏了,我爲你修好了口音配方。 – woot

+0

好人....... –