Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ SQL. Базы данных. _ SQLite, ка заставить СУБД сортировать по-русски?

Автор: Litkevich Yuriy 9.4.2009, 18:17

Т.е. чтобы сортировка была не тупая по порядку символов в строке:
"C1"
"C10"
"C11"
"C18"
"C2"
"C3"
А человеческая:
"C1"
"C2"
"C3"
"C10"
"C11"
"C18"

Может кто-нибудь уже прощупал это дело?

Автор: panter_dsd 9.4.2009, 18:34

На сколько я знаю, постыми способами никак.

Автор: ViGOur 9.4.2009, 20:09

В твоем случае при сортировке сравнивается по одному символу, а в твоем случае нужно переписать сортировку так, чтобы в случае цифр, сортировка шла не по одному символу, а по грумме символов пока есть цифры.

Можн в данной теме попробовать составить алгоритм сортировки. :)

Автор: Litkevich Yuriy 9.4.2009, 20:14

ViGOur, я в программе ничего не делаю. Максимум что можно: создать особым образом таблицу или что-то добавить в запрос. Т.е. это просто в файле SQL-скрипта.

Автор: ViGOur 9.4.2009, 20:20

Ааааа, тогда даже и не знаю!

Автор: Litkevich Yuriy 9.4.2009, 20:27

я наёшл только http://www.sqlite.org/datatype3.html#collation и оба не годятся.

Автор: Tonal 10.4.2009, 10:14

Наиболее просто - добавить дополнительное поле для цифр и заполнять его автоматом в триггере.
По нему и сортировать. :)
В нормальных базах для этого есть вычисляемые поля и процедуры. :)

Автор: Litkevich Yuriy 10.4.2009, 11:12

да какой-то кастрированный PSQL у SQLite'а.

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

Автор: Tonal 13.4.2009, 8:10

Вроде бы в SQLite можно регистрировать свои функции и их использовать в SQL-ях.
Хотя для такой сортировки я бы просто сорт-прокси специализированный написал при прочих равных. :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)