我想在android上现有的sqlite数据库上执行以下操作,该数据库的构建方式类似于该列:id — rule — path —someotherdata
现在,规则例如包含文件名的一部分(或者只是一些琐碎的东西,例如“ mypicture”,也可能是文件类型,例如“ jpg”)。现在我想做的是,我想编写一个查询,该查询将获取我的所有规则,其中包含输入字符串的一部分。我尝试了以下示例:字符串值=“ somepicturefilename.jpg”
我的声明:
"SELECT DISTINCT * FROM " + TABLE_RULES + " WHERE instr('"+ value + "',rule)!=0 ORDER BY " + KEY_ID+ " DESC;"
该语句在Java中,因此应在该语句中插入“值”。
但是,这不起作用。我对sql或sqlite不太熟悉,没有人有tip =;)谢谢。
编辑:我也尝试过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;";
但会引发“无此操作”异常。
AFAIKinstr()不可用,因此您可以使用:
instr()
select * from table where replace("poniesAsUnicorns.jpg", rule, "") != "poniesAsUnicorns.jpg";
或不区分大小写的匹配项:
select * from table where replace(upper("poniesAsUnicorns.jpg"), upper(rule), "") != upper("poniesAsUnicorns.jpg");