我正在开发一个Android应用程序,一个问题让我很困惑,我想实现一个像搜索联系的功能只是部分号码,如联系人A有一个号码为1234567,我希望用户只是然后输入123或345等相关联系人将被列出;但是当我研究android的数据库结构时,似乎很难实现,唯一的相关数据只是表数据中的DATA1和DATA4,DATA1正好是什么用户在添加联系人时输入;但是它将具有某种格式,例如123-456(123)456或123 456等.DATA4是标准化数字,但有时它将具有国家代码部分,例如+1等。有时它是正序,有时它是相反的顺序,如+1123456或6543211 +,所以我觉得很难实现它,有人可以帮助我!提前感谢!
答案 0 :(得分:2)
第一种方法 -
将用户输入值(例如345)传递给函数
public String getPreparedInput(String input) {
if(input==null || input.trim().length()==0) return "";
StringBuilder sb = new StringBuilder("%");
char[] chars = input.trim().toCharArray();
for(char ch : chars) {
sb.append(ch);
sb.append("%");
}
return sb.toString();
}
接下来,在内容解析器的where子句中使用函数的输出(即%3%4%5%)
String where = "phone_number like '" + getPreparedInput(input) + "'";
第二种方法 -
在where子句
中使用SQLite replace()函数
String where = "replace(replace(replace(replace(replace(phone_number,'+',''),'-',''),'(',''),')',''),' ','') like '%" + input + "
%'";