PDA

View Full Version : مرتب کردن اطلاعات براساس حروف الفبای فارسی



salmah
شنبه 08 آذر 1393, 21:50 عصر
سلام
میخوام FirstName را بر اساس حروف الفبا مرتب کنم ولی چون داده های من فارسی هست
Order by FirstName ASC
این دستور تاثیری نداره باید چی بنویسم

حمیدرضاصادقیان
یک شنبه 09 آذر 1393, 09:06 صبح
سلام
شما وقتی دارید رو یک فیلد رشته ای Sort انجام میدین خود SQL Server این مورد رو رفع می کنه.
در ضمن شما چه Collation رو انتخاب کردید؟
نوع فیلد رشته ای شما چیه؟ آیا char یا Varchar یا Nvarchar گرفتید؟

salmah
یک شنبه 09 آذر 1393, 09:39 صبح
nvarchar انتخاب کردم

حمیدرضاصادقیان
یک شنبه 09 آذر 1393, 12:35 عصر
خوب از چه Collation دارید استفاده می کنید.؟

salmah
سه شنبه 11 آذر 1393, 10:36 صبح
خوب از چه Collation دارید استفاده می کنید.؟
ببخشید collection چیه
:خجالت:

حمیدرضاصادقیان
سه شنبه 11 آذر 1393, 22:40 عصر
Collation طریقه مرتب کردن و رفتار کردن SQL Server با داده های متنی شما رو مشخص میکنه.
روی دیتابیس راست کلیک کنید و ببینید چه Collation داره؟
احتمالا فیلدهای شما هم از Default Database Collation استفاده میکنه

salmah
چهارشنبه 12 آذر 1393, 18:21 عصر
با تشکر از شما . collection دیتابیسم SQL_Latin1_General_CP1_CI_AS بود

حمیدرضاصادقیان
چهارشنبه 12 آذر 1393, 22:43 عصر
میشه نمونه داده ای که وقتی سورت انجام میدین رو اینجا قرار بدین؟

navbas
یک شنبه 30 خرداد 1395, 19:30 عصر
دوستان من با collation فارسی Persian_100_CI_AI یه مشکلی دارم
در هنگام sort کردن حرف <آ> (الف با مد یا کلاه) بعد از <ا> (الف معمولی) قرار می‌گیره
از SQL Express 2012 استفاده می‌کنم
راه حلی وجود داره؟

Moseyza
پنج شنبه 20 مهر 1396, 11:17 صبح
دوستان من با collation فارسی Persian_100_CI_AI یه مشکلی دارم
در هنگام sort کردن حرف <آ> (الف با مد یا کلاه) بعد از <ا> (الف معمولی) قرار می‌گیره
از SQL Express 2012 استفاده می‌کنم
راه حلی وجود داره؟

در C#‎‎ با کدی شبیه کد زیر میتونی مرتب سازیتو اصلاح کنی

public class FarsiComparer : IComparer<string> {
public int Compare(string x, string y)
{
if (x.ToCharArray()[0] =='آ' && y.ToCharArray()[0] !='آ')
return -1;
if (x.ToCharArray()[0] == 'ا' && y.ToCharArray()[0] == 'آ')
return 1;
return String.Compare(x, y);
}
}
حالا میتونی برای مرتب سازی از کلاسی که بالا تعریف شده استفاده کنی

var result = list.OrderBy(f => f, new FarsiComparer());