android sqlite和正则表达式 [英] android sqlite and regular expressions

查看:21
本文介绍了android sqlite和正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从数据库中选择所有以一个或多个字母开头但不包含字母x"的名称.

I need to select the query from the database all the names that begin with the letter or letters, but without the letter "x".

对于现在存在于以下代码中的一些标题(它很慢但有效):

For some titles that now exists in the following code(It's slow but it works):

 String qstr = "SELECT SUM("+SQLhelper.COL_COUNT +") FROM " 
               + SQLhelper.TABLE_MYDETAILS + " WHERE " +        
                         SQLhelper.COL_DETAILID + " LIKE 'sh%'" + 
                " or " + SQLhelper.COL_DETAILID + " LIKE 'sw%'" +
                " or " + SQLhelper.COL_DETAILID + " LIKE 'cty%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'twn%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'tlm%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'sp%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'rac%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'frnd%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'elf%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'pm%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'cas%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'oct%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'hp%'"+    
                " or " + SQLhelper.COL_DETAILID + " LIKE 'njo%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'loc%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'stu%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'iaj%'"+ 
                " or " + SQLhelper.COL_DETAILID + " LIKE 'tlr%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'lor%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'ovr%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'tnt%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'pi%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'idea%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'min%'"+
                " or " + SQLhelper.COL_DETAILID + " LIKE 'trn%'"; 
    Cursor allc = db.rawQuery(qstr, null);          
    allc.moveToFirst();        
    int cnt = allc.getInt(0);
    if(cnt==0) {
        Toast.makeText(this, getResources().getString( R.string.myminifigsnotfound ), Toast.LENGTH_LONG).show();
        return;
    }
    allc.close();

当我添加其他名称时,必须将其添加到查询字符串中.我尝试这样做,使用正则表达式:

When I add other names must be added to the query string. I tried to do so, using regular expressions:

 sql = "SELECT " + SQLhelper.COL_DETAILID + "," + SQLhelper.COL_COUNT 
      + " FROM " + SQLhelper.TABLE_INSTRUCTIONS 
     + " where " +SQLhelper.TABLE_INSTRUCTIONS_SETID + "="+setid 
       + " and "+ SQLhelper.COL_DETAILID +" LIKE '[a-wyz]%'";

但它不起作用,它返回一个空查询.怎么做?

But it does not work, it returns an empty query. How to do it?

推荐答案

也许现在回答这个问题有点晚了,但我把它放在这里,供以后可能遇到同样问题的人使用.要在 Android 的 Sqlite 中使用 REGEXP 运算符,您可以使用库 SqliteRE :

Maybe it's a little bit late to answer this question , but I put it here for people who may face the same problem later. For using REGEXP operator in Android's Sqlite you can use the library SqliteRE :

https://github.com/mobi-life/sqlitere

如果需要,它还支持用于加密数据的可选功能.

It also supports optional feature for encrypting data if you want.

这篇关于android sqlite和正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆