Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLite带LIKE语句的大小写重音符号_Java_Android_Sqlite - Fatal编程技术网

Java SQLite带LIKE语句的大小写重音符号

Java SQLite带LIKE语句的大小写重音符号,java,android,sqlite,Java,Android,Sqlite,我的android联系人列表中存储了这4个联系人,这是一个SQLite数据库 António Meireles AntÓnio Pinto Ágata Silva ágata Pereira 如果我执行: select _id, display_name from raw_contacts where upper(display_name) like upper('%antó%') select _id, display_name from raw_contacts where upper(

我的android联系人列表中存储了这4个联系人,这是一个SQLite数据库

António Meireles
AntÓnio Pinto
Ágata Silva
ágata Pereira
如果我执行:

select _id, display_name from raw_contacts where upper(display_name) like upper('%antó%')
select _id, display_name from raw_contacts where upper(display_name) like upper('%á%')
我得到的是安东尼奥·梅雷莱斯,而不是两个安东尼奥

如果我执行:

select _id, display_name from raw_contacts where upper(display_name) like upper('%antó%')
select _id, display_name from raw_contacts where upper(display_name) like upper('%á%')
我得到的是佩雷拉,而不是两个

这里怎么了?
upper()
函数是否应该使其两侧完全相同,并同时返回
António
s和
Ágata
s

当我试图使我的搜索不区分大小写时,当重音进入等式时,这种情况就发生在我身上。根据我的阅读,建议将两者(比较器和要比较的字符串)都放在大写或小写,两个字符串都会匹配,但在我的情况下不会发生这种情况。

根据,about LIKE子句:

任何其他字符都匹配自身或其大小写等效项 (即不区分大小写的匹配)

但是有一个bug注释:

SQLite只能通过以下方式理解ASCII字符的大写/小写 违约对于unicode,LIKE运算符默认区分大小写 超出ASCII范围的字符。例如 像“a”一样的“a”是真的,但像“Æ”一样的“æ”是假的

因此,您可能必须省略大写子句,并通过在where子句中添加大小写来处理非ASCII字符的大写

i、 e


如果您可以影响数据库模式和进入其中的数据,请参阅@laalto。我以前见过这个示例,但不幸的是,我无法将其应用到我的案例中,因为我正在直接处理Android的联系人存储数据库。这不是我自己的数据库。是的,我怀疑会是这样,并没有标记为重复。我现在还不知道答案,也没有时间去试验。