ПредишенСледващото

  • MySQL

Добър ден. В развитието на магазина се сблъскват с неправилна сортиране на стоките по име, ако те представят редица в заглавието.

Че има: базата данни MySQL и таблицата с продукти с име на поле.

В името на стоките може да представи няколко номера, и те могат да бъдат в различни места на линията. Ето един пример:

В стандартния вид (ORDER BY име ASC) да получа следния списък:

Обектите са подредени по първа буква, за кои номера са тогава сортирани класическата поредица от номера: 13, 16, 9, 10, 14, 9. Сравнение се среща само на първата цифра е 9, обаче, след 10 или по-висока.

Какъв е проблемът: фактът, че тези цифри могат да бъдат разположени навсякъде по линията, те могат да бъдат в полукръгъл скоби или не. Тъй като броят на правото на собственост върху стоката може да бъде навсякъде, а след това изчезват всички опции с SUBSTRING_INDEX. Просто ми дори в главата не идва, за да се види дали има помогне на регулярни изрази. Оказва се, че е необходимо да се създаде нещо, което ще се редуват всяка дума, след като пространството и да го сравни като низ или число.

В момента съм решила проблема, ми се струва, брутален патерица. Когато пробата на стоката, което направих клипинг скоби и да се създаде друга променлива name_order - не е, за да имат повече време, за да се отърве от скобите в бъдеще:

На следващо място, съм създал SPLIT_STR функция. които ще бъдат намалени с променлива пространство. Е, последната и най-ужасното нещо - това е намаляване на името на продукта на отделни думи и числа, за да донесе на всеки елемент от "масив" на номер чрез гласове, и като резултат, сортиране чрез огромен брой променливи:

Както можете да видите от кода, аз нарязани името на 12 елемента в пространство, а след това един по един, за да сравните всеки елемент и броя като низ. С тази подредени всичко работи перфектно, че само този код болезнено за гледане.

Внимание на въпроса: може би някой има по-правилното и целесъобразно решение на проблема? Собствен опит, или поне да помисли как да се направи същата функционалност, но по-точно и красиво?

Ще Ви бъда благодарен за всякакви мисли! И благодаря предварително))

Подкрепете проекта - споделете линка, благодаря!