包含“The”的字符串的文本操作

时间:2012-08-09 10:15:19

标签: mysql text-manipulation

我在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

这个解决方案看起来有点笨拙,有没有人有更优雅的答案?

3 个答案:

答案 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)