是否可以按字母顺序对列进行排序但忽略某些单词,例如“The”
例如
正常查询将返回
string 1
string 3
string 4
the string 2
我想回来
string 1
the string 2
string 3
string 4
这可能吗?
编辑 请注意,我希望替换多个单词,例如 The、A 等……可以这样做吗?
是否可以按字母顺序对列进行排序但忽略某些单词,例如“The”
例如
正常查询将返回
string 1
string 3
string 4
the string 2
我想回来
string 1
the string 2
string 3
string 4
这可能吗?
编辑 请注意,我希望替换多个单词,例如 The、A 等……可以这样做吗?
你可以试试
SELECT id, text FROM table ORDER BY TRIM(REPLACE(LOWER(text), 'the ', ''))
但请注意,对于大型数据集,它会非常慢,因为它必须为每一行重新计算新字符串。
IMO 最好使用带有索引的单独列。
对于多个停用词,只需保持嵌套REPLACE
调用。:)
我有一个超过 75,000 条记录的音乐列表,我也遇到过类似的情况。我编写了一个 PHP 脚本来检查所有以 'A'、'An' 或 'The' 开头的字符串,并从字符串中截断该部分。我还将所有大写字母转换为小写,并将该字符串存储在一个新列中。在该列上设置索引后,我就完成了。
显然,您显示初始列,但按新创建的索引列排序。我现在在一秒钟左右得到结果。
是的,应该可以使用带有 ORDER 部分的表达式:
SELECT * FROM yourTable ORDER BY REPLACE(yourField, "the ", "")
这将替换所有前导的“The”作为示例
SELECT *
FROM YourTable
ORDER BY REPLACE(Val,'The ', '')