مشکل با Order By در Sqlite و زبان فارسی
سلام دوستان
sqlite با مرتب کردن ردیف ها به ترتیب حروف الفبا در زبان فارسی مشکل داره
من از این کد استفاده میکنم:
SELECT * FROM my_table_name ORDER BY name ASC
وقتی مرتب سازی انجام میشه تا حرف "ق" به خوبی پیش میره و از اون به بعد وارد حرف "ل" میشه و در کل بقیش هم به هم میریزه.
راهکاری برای حل این موضوع هست ؟
می تونید بدون استفاده از دستور ORDER BY عناصر دیتابیس رو توی آرایه ذخیره کنید و بعد آرایه رو بر اساس حروف الفبا مرتب کنید که درست هم کار می کنه.
با کد زیر می تونید این کارو بکنید. دقت کنید که متد organizeAlphabetically خروجی نداره و مستقیما خود آرایه رو بر اساس حروف الفبا مرتب می کنه. چون که شما با دستور * همه ی فیلدهای دیتابیس رو گرفتید فرض کنیم که مثل لیست ویو یه کلاس به اسم StructItem براش ساختید و توی این کلاس فیلدهایی مثل فیلدهای دیتابیس ساختید که عناصر دیتابیس رو توی اون ذخیره می کنید. و آرایه ای از StructItem ها درست کردید که توی این StructItem چندتا فیلد دارید مثل name, age,... که هر کدوم از این StructItem ها یه رکورد از دیتابیس رو توی خودش ذخیره می کنه و می خواید آرایه رو بر اساس فیلد name مرتب کنید:
public static void organizeAlphabetically(ArrayList<StructItem> items) {
Collections.sort(items, new Comparator<StructItem>() {
@Override
public int compare(StructItem s1, StructItem s2) {
return s1.name.compareTo(s2.name);
}
});
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .