是否可以按字母顺序对列进行排序,但忽略某些单词,例如'''
e.g。
普通查询将返回
string 1
string 3
string 4
the string 2
我想返回
string 1
the string 2
string 3
string 4
这可能吗?
修改 请注意我想要替换像The,A等多个单词......可以这样做吗?
答案 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”开头的所有字符串,并从字符串中截断该部分。我还将所有大写字母转换为小写,并将该字符串存储在新列中。在该列上设置索引后,我就完成了。
显然,您显示的是初始列,但按新创建的索引列排序。我现在得到一秒左右的结果。