我在MySQL数据库中有一个表,其中包含这样的数据;
ID text
1 Action Jackson
2 The impaler
3 The chubby conquistador
4 Cornholer
我想按字母顺序减去前导的"The "显示它们。这就是我想出的有效的方法。
SELECT ID, CASE LEFT(l.text, 4) WHEN "The " THEN CONCAT(RIGHT(l.text, LENGTH(l.text) - 4), ", The") ELSE l.text END AS "word"
FROM list l
这个解决方案似乎有点笨拙,有人有更优雅的答案吗?
我认为这就是您要查找的:
SELECT ID,
text
FROM list l
ORDER BY TRIM(LEADING 'The ' FROM text);
如果可以的话,我会考虑稍微重组一下您的数据。依靠 mysql 索引和正确的排序比像这样动态地进行要好数百倍。
添加一个删除"The "的字段并对其进行排序怎么样?您可以通过几个触发器确保此辅助字段始终正确。
SELECT TRIM(LEADING 'The' FROM text) as word
FROM list
ORDER BY TRIM(LEADING 'The' FROM text)