Intereting Posts
SEO для URL-адресов PHP? soapclient или fopen не работает Как получить текст в массиве между всеми тегами <span> из HTML? Сохранение строки Base64 на диск как двоичный файл с использованием PHP получение HTTP-ответа POST-ответа из файла PHP (отправка POSTS работает нормально, это получение, которое я не могу понять) Как создать чистый URL-адрес с использованием .htaccess Что заменить mysql_result для MySQLi Есть ли такой инструмент, как phpMyAdmin, который можно настроить для доступа только к одной базе данных? Управление ошибками PHP Как получить сгенерированный javascript контент с другого сайта с помощью cURL? Отправить значения select в массиве Войдите с учетной записью Google в CodeIgniter с OpenID Как преобразовать строку JSON в массив (PHP)? Будет ли повышать производительность опроса из базы данных SQL вместо файла для чата? Решение для краткого описания в watchout woocommerce wordpress не работает для меня

MYSQL выбирает часть строки и порядок этой части

У меня есть поле с такой информацией «web-1 / 1., web-2 / 2., web-3 / 3., web-4 / 4., web-5/5». Другие регистры могут иметь разные значения, такие как «web-1 / 4., web-2 / 5., web-3 / 1., web-4 / 2., web-5/3».

Я хочу выбрать и заказать, скажем, web-2 /? будет web-2/1, web-2/2, web-2/3 и т. д. во всех полях, которые содержат веб-2 и порядок по последнему номеру

Я хочу создать признак свойств скриптов на разных сайтах и ​​указать номер функции. Различные свойства, разные веб-сайты различного порядка

Я бы предложил вам посмотреть на строковые функции MySQL и, более конкретно, на функцию SUBSTRING_INDEX . Причина, по которой я предлагаю этот SUBSTRING состоит в том, что число до или после косой черты может быть больше, чем одно число, которое SUBSTRING бы длину первой и / или второй частей.

Пример:

 SELECT `info`, SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`, SUBSTRING_INDEX(`info`, '/', -1) AS `second_part` FROM `table` ORDER BY `first_part` ASC, `second_part` ASC; 

Результат:

результат

Дополнительный пример

В этом примере я использую CAST для преобразования второй части в целое число без знака, если оно содержит дополнительные символы, такие как символы или буквы. Другими словами, вторая часть «web-4/15». будет «15», а вторая часть «web-4/15 ****» также будет «15».

 SELECT `info`, SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`, CAST(SUBSTRING_INDEX(`info`, '/', -1) AS UNSIGNED) `second_part` FROM `table` ORDER BY `first_part` ASC, `second_part` ASC; 

Если строки всегда будут соответствовать шаблону, который вы описали, мы можем предположить, что первое значение, которое вы хотите отсортировать, – это позиция индекса 5 в строке (5 символов слева). Второй символ – индекс 7. С учетом этого вы можете сделать следующее, считая, что строка «web-2/1» находится в поле с именем field:

 SELECT `field` FROM `table` ORDER BY substr(`field`, 5, 1) ASC, substr(`field`, 7, 1) ASC; 

Функции substr () принимают это поле как первый параметр, упомянутый выше индекс и третий параметр параметра, который является количеством для количества символов, которое должно включать начало второго варианта.

Вы можете настроить это, если необходимо, если строка немного выключена, главным из которых является второй вариант в функции subtr ().

Просто добавьте: ...ORDER BY SUBSTRING(username, 2) ASC

Я бы сделал это

 SELECT info FROM table WHERE info LIKE 'web-2%' ORDER BY info ASC