2016-12-28 179 views
0

沒有任何人有交代原因:MySQL的排序查詢結果

SELECT * FROM MY_TABLE WHERE 1 = 1 AND libelle COLLATE latin1_general_ci LIKE '%dég%' 

返回1條記錄(僅適用於E中的記錄),而

SELECT * FROM MY_TABLE WHERE 1 = 1 AND libelle COLLATE latin1_swedish_ci LIKE '%dég%' 

返回4條記錄(當然包括上面的一個)?

根據MySQL doc latin1_general_ci是「多語言(西歐)不區分大小寫」的,所以不應該像latin1_swedish_ci那樣管理重音符號?

感謝 薩科

+1

西歐有很多種語言。我懷疑他們都與瑞典人有相同的規則。 –

+1

請同時顯示兩個查詢的結果 –

+0

請爲不同查詢顯示其他匹配不同的值。 –

回答

0

我懷疑你誤解是什麼排序規則。

排序規則是一組用於自然語言(瑞典語,英語,俄語,日語...)的規則,用於確定單詞的詞典順序。在關係數據庫中,這用於對數據進行排序(例如,ORDER BY子句)並比較數據(例如WHERE子句或唯一索引)。一對夫婦的例子:

  • 如果您需要按國家英文名稱命令你將會得到:

    1. 加拿大
    2. 中國
    3. 哥倫比亞


    然而,在傳統的西班牙語ch曾經是一個獨立的信件,所以正確的順序是這樣的:

    1. 加拿大
    2. 哥倫比亞
    3. 中國
  • 在瑞典,å是一個單獨的字母,所以你可以有一個登錄名狀ångström即使你已經有angström。在其他語言中,它們會被複制並且不被允許。

整理是您使用顯示錶情圖案等Unicode字符的東西。這只是編碼(ISO-8859-1,UTF-8,UTF-16 ......不管)。