2013-02-28 80 views
5

我在帶有標籤的數據庫中有一個大表。不是所有的單詞都有拉丁字符(英文,法文...),某些單詞有非拉丁字符(希伯來語,波斯語,阿拉伯語...)MySQL按字符串語言排序

如何選擇單詞ORDER BY [Language of word]

+0

SELECT * FROM表ORDER BY CONVERT( 'word_column' 用UTF8)ASC – Shridhar 2013-02-28 23:34:55

+0

您是否將單詞的實際語言存儲在同一個表格的一個字段中?試圖寫這樣的口譯員幾乎是不可能的。例如,你打算如何處理諸如「不同」這樣的詞 - 法語和英語拼寫相同。如果你只想通過查看字符串中的字符來做到這一點,你將會處於非常深的水中,而且幾乎不可能。 – BenM 2013-02-28 23:35:20

+0

@benM,你提到的這個詞是一個不好的例子,因爲在法語中你會在第一個「e」上使用「é」。但你的干預理論仍然有效 – Sebas 2013-03-01 00:03:57

回答

4

您可以定義第二個表格語言,然後爲每個條目附加一個語言標籤。您可以向語言表添加排序順序列,然後在選擇時,按照語言表進行連接,然後按標記字段排序,然後按語言排序順序排序。

+0

這意味着: 1-我必須在'addtags.php'頁面添加n個輸入,因爲那裏沒有辦法檢測字符串的語言是否爲希伯來語,波斯語... 2-我已經創建了許多單詞表 – 2013-02-28 23:38:14

+0

也許您可以發佈一個單獨的問題,以詢問如何從一組utf字符中提取語言標識符.. – Zak 2013-02-28 23:40:02

+0

請參閱我之前對您的問題的評論 - 您如何計劃處理在日耳曼語言中拼寫相同的單詞?例如:'不同'... – BenM 2013-02-28 23:41:15

1

您可以使用MySQL函數調用FIELD()

ORDER BY FIELD(Language,'English','Japan','Swedish') 

或者如果你有較少的語言命令:

ORDER BY `ID`, 
    CASE `Language` 
    WHEN 'English' THEN 1 
    WHEN 'Japenese' THEN 2 
    WHEN 'Swedish' THEN 3 
    END 
+1

假設他已將該語言存儲在另一列中。 – BenM 2013-02-28 23:38:06