2012-08-27 146 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

我同意,如果你在这个规模工作。但是你可能想看看全文索引。 –

相关问题