MySQL按名称排序

时间:2009-11-27 12:31:12

标签: mysql sorting alphabetical alphabetized

是否可以按字母顺序对列进行排序,但忽略某些单词,例如'''

e.g。

普通查询将返回

string 1
string 3
string 4
the string 2

我想返回

string 1
the string 2
string 3
string 4

这可能吗?

修改 请注意我想要替换像The,A等多个单词......可以这样做吗?

4 个答案:

答案 0 :(得分:5)

你可以尝试

SELECT id, text FROM table ORDER BY TRIM(REPLACE(LOWER(text), 'the ', ''))

但请注意,对于大型数据集来说,它会非常慢,因为它必须重新计算每个行的新字符串。

IMO你最好选择一个带有索引的单独列。

对于多个停用词,请保持嵌套REPLACE来电。 :)

答案 1 :(得分:0)

是的,应该可以使用带有ORDER-part的表达式:

SELECT * FROM yourTable ORDER BY REPLACE(yourField, "the ", "")

答案 2 :(得分:0)

这将取代所有领先的“The”作为例子

SELECT  *
FROM    YourTable 
ORDER BY REPLACE(Val,'The ', '')

答案 3 :(得分:0)

我的音乐列表超过75,000条记录,我遇到了类似的情况。我编写了一个PHP脚本,检查以“A”,“An”或“The”开头的所有字符串,并从字符串中截断该部分。我还将所有大写字母转换为小写,并将该字符串存储在新列中。在该列上设置索引后,我就完成了。

显然,您显示的是初始列,但按新创建的索引列排序。我现在得到一秒左右的结果。