PDA

View Full Version : sort فارسی در mysql



bestelsa
دوشنبه 17 مهر 1385, 09:40 صبح
سلام
چگونه میتوان داده های فارسی را در دیتابیس mysql بر حسب حروف الفبا مرتب کرد؟

Arman_gh
دوشنبه 17 مهر 1385, 13:55 عصر
سلام
اول از همه به اینجا (http://flowchart.webilix.com) برو یک مقاله نسبتآ کامل دارد.
ولی به طور مختصر میتونم اینطور بگم که باید یک ستون اضافه در جدولت ایجاد کنی که کار این ستون علامت گذلری برای حروف الفبای فارسی از طریق الفبای انگلیسی باشه مثال:
حرف A در الفبای انگلیسی برابر حرف آ الفبای فارسی است.شما باید در فیلد مذکورهر جا که رکرپدی دارید که با حرف آ شروع میشود در ستون علامت آن را برابر A قرار دهید و در آخر فرمان order by را مطابق با ستون علامت مرتب کنید

tabib_m
دوشنبه 17 مهر 1385, 15:11 عصر
بابا چرا این بنده خدا رو گیجش میکنی
مای اس کیو ال شعورش بالا تر از این حرفاس که بخوایم از این کارا بکنیم.


order by binary `fieiedName`

bestelsa
سه شنبه 18 مهر 1385, 09:07 صبح
tabib_m (http://barnamenevis.org/forum/member.php?u=11132) با تشکر از شما اما داده هائی که می خواهم sort کنم فارسی هستند و با دستور order by مرتب نمیشوند

arash_hemmat
سه شنبه 18 مهر 1385, 10:04 صبح
نسخه mysql شما چنده؟ این امکان از نسخه 4.1 و خورده ای! به بعد وجود داره و اون خورده ای رو یادم نیست.

tabib_m
سه شنبه 18 مهر 1385, 12:02 عصر
از عبارت binary هم استفاده کردین؟؟؟


order by binary `fieldName`

Helen_Farhani
جمعه 03 آذر 1385, 17:24 عصر
سلام
اینجا بحث به نتیجه ای نرسیده است؟ و یا تاپیک دیگه ای برای این منظور وجود داره؟

arash_hemmat
شنبه 04 آذر 1385, 12:56 عصر
خیلی سادست باید زمان ساخت دیتابیس و جداول و همچنین فیلدهای متنی collation رو utf8-persian-ci انتخاب کنید و بعد از این دستور orderby میتونه عبارات فارسی رو درست مرتب کنه.
نکته: اگر از phpmyadmin برای ساخت دیتابیس استفاده میکنید همون اول collation رو utf8-persian-ci انتخاب کنید و کار تمومه. در غیر اینصورت میتونید توی phpmyadmin با collationها ور برید. دقت کنید که امکان استفاده از collationها از نسخه 4.1 و خورده ای به mysql اضافه شده.

leily2000
شنبه 05 اسفند 1385, 11:42 صبح
با سلام به دوستان عزیز
و ب عرض معذرت که دیر این جواب را می گذارم هر چند مشکل مذکور حل شده ولی این نکته را برای تکمیل کردن عرایض دوستان ذکر می کنم :

اگر مثل من بعد از تمام شدن پروژه متوجه شدید که sort فارسی بر اساس حروف عربی مرتب می کند می تونید از این عبارت order by fieldName COLLATE utf8_persian_ci استفاده کنید تا فیلد های جدول به هم نریزد.

موفق باشید.

arash_hemmat
شنبه 29 اردیبهشت 1386, 01:34 صبح
خسته شدم از بس که این سوال رو ازم پرسیدن!
بحث رو کامل میکنم:
برای sort فارسی در mysql باید نسخه mysql شما بالاتر از ۴.۱ باشه و باید به ترتیب زیر عمل کنید:

SELECT filedname FROM table ORDER BY BINERY fieldname COLLATE utf8_persian_ci

بهتره collation جداول و ستونهاتون رو هم utf8_persian_ci انتخاب کنید تا هم سرعت عملیات بیشتر بشه و هم از اشکالات احتمالی جلوگیری کنید.

اگر نسخه mysql شما کمتر ۴.۱ هست امکان sort فارسی وجود نداره و باید بعد از استخراج اطلاعات از database اطلاعاتتون رو با زبان برنامه نویسی که استفاده میکنید sort کنید. کدهای sort فارسی تقریبا برای تمام زبانهای برنامه نویسی در اینترنت وجود داره و میتونید با یک جستجو در همین انجمن یا در اینترنت کدهای لازم رو پیدا کنید.

موفق باشید

I,Nobody
شنبه 29 اردیبهشت 1386, 14:56 عصر
من فکر می کنم اینم جواب میده :


SELECT * FROM table ORDER BY ASCII(last_name) ASC

arash_hemmat
شنبه 29 اردیبهشت 1386, 15:27 عصر
من فکر می کنم اینم جواب میده :
کد:

SELECT * FROM table ORDER BY ASCII(last_name) ASC

__________________
فکر میکنی یا مطمئنی؟ بنظر من که کار نمیکنه!

I,Nobody
یک شنبه 30 اردیبهشت 1386, 00:50 صبح
من تا حالا باهاش مشکلی نداشتم.
میشه تستش کرد. ولی ادعایی روش ندارم
البته روش شما منطقی به نظر میرسه ولی من باید تستش کنم ببینم مساله collation مشکلی ایجاد نمیکنه؟