我想在我现有的Android上的sqlite数据库上执行以下操作,这是一种类似的构建
colomns:id — rule — path — someotherdata
colomns:id — rule — path — someotherdata
现在的规则,例如包含文件名的一部分(或者只是一些简单的东西,如“mypicture”或文件类型,如“jpg”).现在我想要做的是,我想写一个查询,它获取我的所有规则,其中包含inputtring的一部分.
我试过以下示例:String value =“somepicturefilename.jpg”
我的声明:
"SELECT DISTINCT * FROM " + TABLE_RULES + " WHERE instr('"+ value + "',rule)!=0 ORDER BY " + KEY_ID+ " DESC;"
语句在java中,因此应该在语句中插入“value”.
但是,这不起作用.我不太熟悉sql和sqlite,有没有人有一个提示=;)谢谢.
编辑:我也尝试过charindex,但也没用.
编辑:这是一个更详细的例子.
给出了以下数据库.
id --- rule --- 1 "jpg" 2 "ponies" 3 "gif" 4 "pdf"
现在用户输入文件名.让我们说“poniesAsUnicorns.jpg”.所以“poniesAsUnicorns.jpg”是我的输入字符串,查询应该匹配id#1和id#2,因为“poniesAsUnicorns.jpg”包含“jpg”和“ponies”
我希望澄清我想要的东西.
编辑:
这也是我也尝试过的:
String statement = "SELECT DISTINCT * FROM " + TABLE_RULES + " WHERE charindex(rule,'" + value + "') > 0 ORDER BY " + KEY_ID + " DESC;";
但抛出“没有这样的操作”的例外.
AFAIK instr()不可用,因此您可以使用:
select * from table where replace("poniesAsUnicorns.jpg",rule,"") != "poniesAsUnicorns.jpg";
或者对不区分大小写的匹配:
select * from table where replace(upper("poniesAsUnicorns.jpg"),upper(rule),"") != upper("poniesAsUnicorns.jpg");