مرتب سازی صحیح حروف فارسی در بانک اطلاعاتی SQLite
نویسنده: وحید نصیری
تاریخ: ۱۳۹۷/۰۳/۲۸ ۱۴:۵۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
var connection = new SqliteConnection("Data Source=:memory:");
connection.Open();
var createCommand = connection.CreateCommand();
createCommand.CommandText =
@"
CREATE TABLE persian_letter (
value TEXT
);
INSERT INTO persian_letter
VALUES ('ا'),('ب'),('پ'),('ت'),('ث'),('ج'),('چ'),('ح'),('خ'),('د'),('ذ'),('ر'),('ز'),('ژ'),('س'),('ش'),
('ص'),('ض'),('ط'),('ظ'),('ع'),('غ'),('ف'),('ق'),('ک'),('گ'),('ل'),('م'),('ن'),('و'),('ه'),('ی');
";
createCommand.ExecuteNonQuery(); var queryCommand = connection.CreateCommand();
queryCommand.CommandText =
@"
SELECT value
FROM persian_letter
order by value
";
var reader = queryCommand.ExecuteReader();
var sortedDbItems = new List<string>();
while (reader.Read())
{
sortedDbItems.Add($"{reader["value"]}");
}
connection.CreateCollation("PersianCollationNoCase", (x, y) => string.Compare(x, y, ignoreCase: true)); SELECT value FROM persian_letter order by value COLLATE PersianCollationNoCase
connection.CreateCollation("PersianCollationNoCaseYekeInsensitive",
(x, y) => string.Compare(x.ApplyCorrectYeKe(), y.ApplyCorrectYeKe(), ignoreCase: true)); CREATE TABLE persian_letter (
value TEXT
);
INSERT INTO persian_letter
VALUES ('ی'),('ک'); SELECT count() FROM persian_letter WHERE value = 'ى' COLLATE PersianCollationNoCaseYekeInsensitive