$sql="SELECT * FROM stoc WHERE tip='$t' ORDER BY codint ASC LIMIT $offset, $rec_limit";
И результатMYSQL рода Одер
Acer1
Acer10
Acer11
Acer12
Acer2
и я хочу
Acer1
Acer2
Acer10
Acer11
Acer12
Eny идею?
$sql="SELECT * FROM stoc WHERE tip='$t' ORDER BY codint ASC LIMIT $offset, $rec_limit";
И результатMYSQL рода Одер
Acer1
Acer10
Acer11
Acer12
Acer2
и я хочу
Acer1
Acer2
Acer10
Acer11
Acer12
Eny идею?
Попытайтесь заказать как длину столбца, так и колонку.
SELECT * FROM stoc WHERE tip='$t'
ORDER BY LENGTH(codint),codint LIMIT $offset, $rec_limit"
Хотя это может быть проблемой, если а затем Acer...
существуют другие строки.
Если они существуют, я думаю, вам нужно разделить вниз строку в строку и номер, а затем order by string,number
Я исправить это. Он получает последнюю цифру и порядок ими: http://rextester.com/OWE75092
SELECT `temp`,
convert(
right(
`temp`,
CHAR_LENGTH(`temp`) - Least(
Locate('0',concat(`temp`, '0')),
Locate('1',concat(`temp`, '1')),
Locate('2',concat(`temp`, '2')),
Locate('3',concat(`temp`, '3')),
Locate('4',concat(`temp`, '4')),
Locate('5',concat(`temp`, '5')),
Locate('6',concat(`temp`, '6')),
Locate('7',concat(`temp`, '7')),
Locate('8',concat(`temp`, '8')),
Locate('9',concat(`temp`, '9'))
) +1), UNSIGNED INTEGER) as myInt
FROM Table1
order by myInt;
Очень близко, но если не найдено, вернется 0 http://rextester.com/NRSRUM8836 –
Спасибо! Я исправил это! и поставить демо! –
Здесь я нашел function для удаления не числовых символов
Я легко дублировать, чтобы создать клон для удаления цифровых символов, изменение:
IF SUBSTR(as_val,i,1) NOT IN ....
^^^^^^
SELECT `t`,
uf_no_digits(`t`) as name,
CONVERT(uf_only_digits(`t`), SIGNED) as ID
FROM Table1
ORDER BY name, ID
ВЫВОД
SELECT 'A2' x UNION SELECT 'A11' ORDER BY x;
+-----+
| x |
+-----+
| A11 |
| A2 |
+-----+
SELECT 'A2' x UNION SELECT 'A11' ORDER BY x+0;
+-----+
| x |
+-----+
| A2 |
| A11 |
+-----+
Я подозреваю, что вы собираетесь хотите добавить отдельный столбец для поддержания вашего пользовательского порядка сортировки. Который имел бы выгоду, позволяя вам изменить этот порядок в любое время. – David