2011-01-23 57 views
0

我试图使用MySQL命令排除“excl”,如果它在字符串的开始处找到,并且使用“excl”命令之后发生的事情。如何命令MySQL结果,同时从命令标题中排除字符串

所以它会为了这样的:

标题名称
不含标题B NAME2
标题C名称
标题d名

但不是:

标题名称
标题C名称
标题d名
不含标题B NAME2

回答

1

你要告诉ORDER条款,如果字符串与您要查找的文本开始,然后使用该字符串之后,是串。因此,就“ORDER”过程而言,“不包括标题a”成为“标题a”。

SELECT title 
FROM table_name 
ORDER BY 
IF (SUBSTRING(LOWER(title), 1, 5) = 'excl ', 
    SUBSTRING(title, 6), 
    title 
) 
+0

这是有道理的,更好的,但它的工作原理,谢谢。我现在可以想到SUBSTRING可能派上用场的其他一些情况。 – Mint 2011-01-23 10:11:48

2

编辑:误读的问题,我觉得行开始不包括应到最后,所以CASE需要使用substring(),就像在enobrev的答案中一样。

 
... 
ORDER BY 
    CASE 
     WHEN title_column LIKE 'excl%' THEN substring(title, 6) 
     ELSE title_column 
    END 
+1

我喜欢这个。很好,很干净。我想这两种解决方案在大型数据集上都很慢。 – enobrev 2011-01-23 12:39:41