У меня есть поле с такой информацией «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