2011-01-23 3 views
0

Я пытаюсь использовать MySQL для заказа, исключив «excl», если он найден в начале строки, и используя то, что когда-либо происходит после «excl», чтобы заказать результаты ,Как выполнить ORDER Результаты MySQL, исключая строку из заголовка заказа

Так что прикажет так:

ПТС имя
без названия б name2
названия с именем
название d имя

Но не:

заголовке имя
название с именем
Название д имя
без Название б имя2

ответ

1

Вы хотите сказать, что положение ORDER, если строка начинается с текстом, который вы ищете, а затем использовать подстроку, которая приходит после этой строки. Таким образом, «excl title a» становится «title a» в отношении процесса ORDER.

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

Это имеет смысл, и еще лучше, но это работает, спасибо. Я могу думать о некоторых других случаях, когда SUBSTRING может пригодиться сейчас. – Mint

2

Редактировать: неправильно вопрос, я подумал строки, начиная с вкл должны перейдите в конец, поэтому CASE необходимо использовать подстроку(), как в ответе enobrev.

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

Мне это нравится. Хороший и чистый. Я полагаю, что оба решения довольно медленны в большом наборе данных. – enobrev

Смежные вопросы