我在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
这个解决方案看起来有点笨拙,有没有人有更优雅的答案?
答案 0 :(得分:1)
我认为这就是你要找的东西:
SELECT ID,
text
FROM list l
ORDER BY TRIM(LEADING 'The ' FROM text);
答案 1 :(得分:1)
如果你可以的话,我会考虑重新调整你的数据......依靠mysql索引和正确的排序,而不是像这样动态地进行排序,要好几百倍。
如何添加一个删除'The'的字段,并对其进行排序?您可以通过几个触发器确保此辅助字段始终正确。
答案 2 :(得分:1)
SELECT TRIM(LEADING 'The' FROM text) as word
FROM list
ORDER BY TRIM(LEADING 'The' FROM text)