使用like运算符执行查询

时间:2013-02-11 15:56:23

标签: android sqlite

我想根据开始和结束字符以及字符串的长度进行查询。假设,在我的数据库中,我有你好,怎么样,欢呼,亲爱的。我想从数据库中取出蜂蜜,所以我想做一个查询,比如它会找到以“h”开头并以“y”结尾的字符串,这个词的长度是5.我写了一个查询是不是?

Cursor c = sqLiteDatabase.rawQuery("select * from " + MYDATABASE_TABLE
                + " where LENGTH(`" + MYDATABASE_FIELD + "`) = " + len
                + " and `" + MYDATABASE_FIELD + "` LIKE `" + part1 + "%"
                + part2 + "`", null);

2 个答案:

答案 0 :(得分:1)

你应该有这样的条件,

SELECT...
FROM...
WHERE LENGTH(colName) = 5 AND
      colName LIKE 'h%s'

答案 1 :(得分:1)

第二个LIKE运算符是一个字符串,而不是表/列名称,因此不能用反引号引用它。 此外,使用参数可以完全避免字符串格式化问题:

Cursor c = sqLiteDatabase.rawQuery(
    "SELECT * FROM `" + MYDATABASE_TABLE + "` " +
      "WHERE LENGTH(`" + MYDATABASE_FIELD + "`) = " + len + " " +
        "AND `" + MYDATABASE_FIELD + "` LIKE ?",
    new String[] { part1 + "%" + part2 });