加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用LIKE表达式时SQLite中的土耳其语字符

发布时间:2020-12-15 08:26:35 所属栏目:百科 来源:网络整理
导读:select *from urunler where musteri like %ir%; 测试数据: +---musteri---+---ID--++-------------+-------+ +---?rem------+---1---+ +---Kadir-----+---2---+ +---Demir-----+---3---+ 返回结果: KadirDemir 如果使用%rr%然后?rem正在返回,但卡迪尔和
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读