我想根据开始和结束字符以及字符串的长度进行查询。假设,在我的数据库中,我有你好,怎么样,欢呼,亲爱的。我想从数据库中取出蜂蜜,所以我想做一个查询,比如它会找到以“h”开头并以“y”结尾的字符串,这个词的长度是5.我写了一个查询是不是?
Cursor c = sqLiteDatabase.rawQuery("select * from " + MYDATABASE_TABLE
+ " where LENGTH(`" + MYDATABASE_FIELD + "`) = " + len
+ " and `" + MYDATABASE_FIELD + "` LIKE `" + part1 + "%"
+ part2 + "`", null);
答案 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 });