MySQL сортировка VARCHAR с номерами - PullRequest
2 голосов
/ 14 декабря 2010

Как можно отсортировать эти данные численно, а не лексикографически?

100_10A  
100_10B  
100_10C  
100_11A  
100_11B  
100_11C  
100_12A  
100_12B  
100_12C  
100_13A  
100_13B  
100_13C  
100_14A  
100_14B  
100_14C  
100_15A  
100_15B  
100_15C  
100_16A  
100_16B  
100_16C  
100_1A  
100_1B  
100_1C  
100_2A  
100_2B  
100_2C  
100_3A  
100_3B  
100_3C  
100_4A  
100_4B  
100_4C  
100_5A  
100_5B  
100_5C  
100_6A  
100_6B  
100_6C  
100_7A  
100_7B  
100_7C  
100_8A  
100_8B  
100_8C  
100_9A  
100_9B  
100_9C  

select generalcolum from mytable order by blockid, plotid ASC

Что мне нужно из этого порядка сортировки

100_1A
100_1B
100_1C...
...
...
100_10A
100_10B
100_10C

Мне нужно каким-то образом добавить ноль, прежде чем произойдет сортировка, чтобы я мог получить их в нужном мне порядке.

Есть два столбца, один из которых хранит 100 (число перед подчеркиванием), а другой - 1A, значение после подчеркивания.

Мой выбор sudo crap

select thiscolum this table
order by blockid, plotid(+1 zero to prefix if len(plotid) < 2)

Например, если значение графика равно 1А, для лучшей сортировки мне нужно, чтобы оно рассматривалось как 01А, чтобы оно доходило до 10А.

1 Ответ

7 голосов
/ 14 декабря 2010
order by length(blockid), blockid, length(plotid), plotid
...