select *from urunler where musteri like %ir%;
测试数据:
+---musteri---+---ID--+ +-------------+-------+ +---İrem------+---1---+ +---Kadir-----+---2---+ +---Demir-----+---3---+
返回结果:
Kadir Demir
如果使用%rr%然后İrem正在返回,但卡迪尔和Demir没有返回.其他土耳其人的角色也有同样的问题,但没有任何确切的解决方案.我正在编程单声道android.
[sqliteFunction(Name = "TOUPPER",Arguments = 1,FuncType = FunctionType.Scalar)] public class TOUPPER: sqliteFunction { public override object Invoke(object[] args) { return args[0].ToString().ToUpper(); } } [sqliteFunction(Name = "COLLATION_CASE_INSENSITIVE",FuncType = FunctionType.Collation)] class CollationCaseInsensitive : sqliteFunction { public override int Compare(string param1,string param2) { return String.Compare(param1,param2,true); } } TOUPPER.RegisterFunction(typeof(TOUPPER));
用这种方式解决了,还单声道c#’使用了库,这里是我需要做的Android.Database.sqlite.sqliteDatabase
解决方法
针对此类问题的一种解决方案是将文本的规范化版本保存到另一列中.在INSERT文本之前,用一些常用字符替换所有特殊字符,并将两个版本放在数据库中.
你的桌子就像那样
ID musteri musteri_normalized --- ---------- ------------------ 1 İrem Irem 2 Kadir Kadir 3 yapılcağ yapilcag
现在,您可以在规范化列上使用LIKE比较,并仍然从数据库返回实际文本.
SELECT musteri FROM table WHERE musteri_normalized LIKE '%ir%'; -> İrem,Kadir