如何在查询函数中使用LIKE子句

Aru*_*pta 6 sqlite android

我正在制作一个应用程序,根据发件人编号在收件箱中搜索邮件.这是我的代码:

public void onClick(View v)
{
    Toast.makeText(this, "search", Toast.LENGTH_LONG).show();
    final Uri SMS_INBOX = Uri.parse("content://sms/inbox");

    String[] colList = {"address", "body"};

    Cursor c = getContentResolver().query(SMS_INBOX, colList, null, null,"DATE desc");

    String yz= String.valueOf(c.getCount());
    Toast.makeText(this, yz, Toast.LENGTH_LONG).show();

    if(c.moveToFirst())
    {
        Toast.makeText(this, searchtxt.getText(), Toast.LENGTH_LONG).show();

        for(int i=0;i<c.getCount();i++)
        {
            String number=c.getString(c.getColumnIndexOrThrow("address")).toString();
            boolean match = number.toUpperCase().indexOf(searchtxt.getText().toString()) != -1; 

            if (match)
            {
                Toast.makeText(this, String.valueOf(i), Toast.LENGTH_LONG).show();
                String  body= c.getString(c.getColumnIndexOrThrow("body")).toString();
                tv.setText(tv.getText() + "\n" + body);
            }
            c.moveToNext();
        }
    }
    else
    {
        Toast.makeText(this, "Inside else", Toast.LENGTH_LONG).show();
    }

    c.close();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但它检索收件箱中的所有邮件.我希望它应该只检索那些与发件人号码匹配的邮件.为此,我尝试使用LIKE子句进行查询,但是使用它返回0条记录.使用LIKE子句的正确方法是什么.这是我尝试使用LIKE的代码

String[] colList = {"address", "body"};
String[] argList = {"'%"+searchtxt.getText().toString()+"%'"};
Cursor c = getContentResolver().query(SMS_INBOX, colList, "address LIKE ?", argList,"DATE desc");

String yz= String.valueOf(c.getCount());
Toast.makeText(this, yz, Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

请帮帮我......谢谢......

Al_*_*_th 7

有两个小丑:"%"和"_".

"%"正在替换任何字符串(多个字符),

"_"正在替换一个(也是唯一一个)字符.

例如 :

LIKE 'B%' 
Run Code Online (Sandbox Code Playgroud)

让你找到以"B"开头的所有内容.(比如"蝙蝠侠");

LIKE '%B%'
Run Code Online (Sandbox Code Playgroud)

让你找到包含"B"的everthing.(比如"ABBA");

LIKE'_B%'
Run Code Online (Sandbox Code Playgroud)

让你找到包含一个字符的所有内容,然后是"B".(如"ABERCROMBIE").

如果要检索包含"%"或"_"的字符串,可以使用转义符:

LIKE '%#_B%' ESCAPE #
Run Code Online (Sandbox Code Playgroud)

让你找到任何包含一个"_"后跟一个"B"的字符串.(比如"TEST_BATMAN").

我希望有所帮助.

Al_th