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 и порядок по последнему номеру
Я хочу создать признанные свойства script разных сайтов и указать номер функции. Различные свойства, разные веб-сайты различного порядка
Ответы
Ответ 1
Я бы предположил, что вы смотрите на строковые функции MySQL и, более конкретно, SUBSTRING_INDEX
. Причина, по которой я предлагаю этот вариант более 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;
Результат:
![Result]()
Дополнительный пример
В этом примере я использую 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;
Ответ 2
Если строки всегда будут соответствовать шаблону, который вы описали, мы можем предположить, что первое значение, которое вы хотите отсортировать, - это позиция индекса 5 в строке (5 символов слева). Второй символ - это индекс 7. Имея это в виду, вы можете сделать следующее, считая, что строка "web-2/1" находится в поле с именем:
SELECT
`field`
FROM
`table`
ORDER BY
substr(`field`, 5, 1) ASC,
substr(`field`, 7, 1) ASC;
Функции substr() принимают поле в качестве первого параметра, упомянутого выше индекса и третьего параметра параметра, который является количеством для количества символов, которое должно включать начало второго варианта.
Вы можете настроить это, если необходимо, если строка немного выключена, а главное - второй вариант в функции subtr().
Ответ 3
Просто добавьте: ...ORDER BY SUBSTRING(username, 2) ASC
Ответ 4
Я бы сделал это
SELECT info
FROM table
WHERE info LIKE 'web-2%'
ORDER BY info ASC