2016-04-14 2 views
4

У меня есть список имен начинается с символов и заканчиваются с номерами, как: -Естественная сортировка буквенно-цифровых значений в SQLite с помощью андроида

ka1, ka10, ka 2, ka, sa2, sa1, sa10, p1a10, 1kb, p1a2, p1a11, p1a. 

Я хочу, чтобы отсортировать его в естественном порядке, то есть: -

1kb, ka, ka1, ka 2, ka10, p1a, p1a2, p1a10, p1a11, sa1, sa2, sa10. 

Основная проблема, которую я вижу здесь, не является разделителем между текстовой и числовой частью, есть также возможность без числовой части.

Я использую sqlite в android, я могу сортировать с помощью java после получения точек путем кэширования данных курсора, но я использую (рекомендуется использовать) адаптер курсора.

Пожалуйста, предложите запрос для сортировки или есть способ применить сортировку в курсоре?

+0

Просьба указать код, который вы пробовали до сих пор. –

+0

@SKBasha проверить мой ответ –

ответ

-1

Обновлено

Вы можете использовать различные способы - Некоторые из указанных ниже:

БИН Путь

SELECT 
tbl_column, 
BIN(tbl_column) AS binray_not_needed_column 
FROM db_table 
ORDER BY binray_not_needed_column ASC , tbl_column ASC 

Cast Путь

SELECT 
tbl_column, 
CAST(tbl_column as SIGNED) AS casted_column 
FROM db_table 
ORDER BY casted_column ASC , tbl_column ASC 

или попробовать решение:

Есть много решений там, если вы попали на Google, и вы можете, конечно, использовать только функцию natsort() в PHP, но это достаточно просто, чтобы выполнить естественную сортировку в MySQL: сначала сортируйте по длине , затем значение столбца.

Запрос: SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric из here

+0

Это не игнорирует пробелы и не обрабатывает значения с другим количеством цифр правильно. –

0

я могу предложить, используя регулярное выражение замены добавлением нулей, создавая временную таблицу исходных и соответствующих значений, то по этой ссылке для ее сортировки: http://www.saltycrane.com/blog/2007/12/how-to-sort-table-by-columns-in-python/ наконечник для регулярных выражений добавить столько нулей после последней буквы, но ограничивайте количество общих цифр для прогнозируемого максимального количества цифр. Если вам нужна помощь с регулярным выражением, укажите точную информацию о действительных и недопустимых значениях, поэтому можете также остановиться на этом. PS, если вы хотите быть уверенным, что нули идут до последних цифр, поиск символа с конца

Смежные вопросы