2011-09-01 35 views
3

我想在sqlite中使用正則表達式搜索數據庫。這裏是我的代碼:如何在android中使用正則表達式搜索sqlite數據庫?

cursor = db.rawQuery("SELECT _id, employee FROM employees WHERE employee REGEXP ?", 
        new String[]{"%" + prepareSearchText() + "%"}); 
    adapter = new SimpleCursorAdapter(
      this, 
      R.layout.search_row, 
      cursor, 
      new String[] {"_id", "employee "}, 
      new int[] {R.id.idField, R.id.nameField}); 
    setListAdapter(adapter); 

但是我得到這個錯誤:

Caused by: android.database.sqlite.SQLiteException: no such function: REGEXP. 

我使用的功能REGEXP在MySQL之前,所以我認爲它存在於sqlite的,但顯然事實並非如此。

在android中查詢sqlite數據庫時執行正則表達式的最佳方式是什麼?

回答

5

在sqllite中,默認情況下不包含「REGEXP」函數,您需要「滾動自己」。

但是,只要您的搜索合理簡單,「LIKE」運算符就應該做你想要的。

the docs

+5

我怎樣的角色我自己REGEXP在android系統?我找不到一個辦法 –

0

正如詹姆斯所說,使用LIKE操作,然後使用正則表達式

做的結果一個Java搜索
0

假設您想要得到的電話號碼以+開頭或範圍0-9從聯繫表。

REGEXP '^[0-9].*|[+].*' 

SQLITE3查詢

select * from Contact where name REGEXP '^[0-9].*|[+].*'