我在SO上做过几次不同的搜索,寻找一个简单的解决方案来按字母顺序排序mySQL结果,其中某些字段可能包含特殊字符。解决方案:
"SELECT *, REPLACE(title '\"', '') AS indexTitle ORDER BY indexTitle ASC";
在这种情况下,我正在搜索以双引号开头的字符串,转义。
这可能不是一个很好的解决方案,其中特殊字符的类型是未知的,但对于一个简单的排序它很好地工作。
希望这有助于某人。
答案 0 :(得分:0)
执行此操作的一种方法是编写自己的函数以从String中删除非字母数字字符。 Google找到了我this example(我没有检查过它!)。然后你可以这样写:
SELECT *, remove_non_alphanum_char_f(title) AS indexTitle ORDER BY indexTitle ASC;
当然,正如@arkascha在上面的评论中所指出的那样,这是缓慢而且不可扩展的。更好的解决方案是返回一个步骤,如果可能的话,确保表格中的数据的格式正确。如果你真的需要特殊字符,那么在你的表中添加额外的列可能不会增加额外费用,这是title
列,并且删除了特殊字符 - 然后你可以按该列排序。您可以在插入表格时执行剥离。