2012-08-27 145 views
1

排序我有一個MySQL表,這些行:的MySQL與符號第一個字母

¡Hola! 
¿Qué tal? 
Fine 
Hello 
Adiós 
How are you? 

我怎樣才能對它們進行排序,獲得這樣的結果:

Adiós 
Fine 
Hello 
¡Hola! 
How are you? 
¿Qué tal? 

我想讓MySQL忽略非字母數字字符。
可以快速完成此操作,而無需創建具有簡化值的新列?

+3

刪除符號後需要什麼排序?英語?西班牙語嗎?另一個? – gbn

+0

我使用的是UTF8西班牙語整理 – Peter

+0

可能出現的字符可能會出現 – Peter

回答

0

不幸的是,這在MySQL中是一個臭名昭着的痛苦。

Can MySQL replace multiple characters?

試試這個:

ORDER BY replace(replace(phrase,'¿',''),'¡','') 

從您的短語,因爲它們的排序中刪除西班牙語前綴標點符號。有人希望MySQL有一個REGEXP_REPLACE函數。

至於性能,你應該沒有ORDER BY函數,除非你有大量的短語。幾十個,沒問題。

+1

我有大約30,000個短語(電影名稱),我的服務器必須處理每秒100+個請求的峯值。我相信最好的方法是創建一個刪除符號的新列。 – Peter

+0

我同意,如果你在這個規模工作。但是你可能想看看全文索引。 –

相關問題